1
這是我所做的代碼,有人可以解釋爲什麼輸出保持0.0嗎?Math.pow()不工作?
(我試圖讓該二進制轉換爲十進制的程序,我知道,這可以在java中輕鬆地完成以其他方式)
package main;
import java.util.Scanner;
public class Class1 {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
int length = input.length();
double output=0.0;
String reverse = new StringBuffer(input).reverse().toString();
for (int i=0; i==length; i+=1){
switch(reverse.charAt(i)){
case '1': output = (output + (Math.pow(2, i)));break;
case '0': break;
}
}
System.out.println(output);
}
}
作爲備註:Math.pow()與按位運算相比非常慢。你應該避免在諸如乘以2或製作一個數字的平方等微不足道的情況下。 –
感謝您的幫助,我現在更好地解決了循環問題,但您能否解釋一下您的意思:使用1 << i以及它看起來如何? – StijnOnline
你現在有'Math.pow(2,i)'的地方,用'1 << i'代替。 –