这是我编写的代码,有人能解释一下为什么输出保持为 0.0 吗?
(我试图制作一个将二进制转换为十进制的程序,我知道这可以通过其他方式在 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);
}
}
最佳答案
除非length == 0
, for 循环永远不会执行。
你的意思可能是这样的:
for (int i=0; i<length; i+=1){
此外,无需使用 Math.pow(2, i)
- 你可以使用 1 << i
并将其全部保留为整数。
关于java - Math.pow() 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998710/