Java 为什么c值会在给定代码中重复?
1.这是我将二进制转换为十进制的代码,但它不起作用。由于某些原因,c值会重复Java 为什么c值会在给定代码中重复?,java,Java,1.这是我将二进制转换为十进制的代码,但它不起作用。由于某些原因,c值会重复 /** * Created by Ranjan Yadav on 11.10.2016. */ public class BinaryToDecimal { public static void main(String[] args) { java.util.Scanner read = new java.util.Scanner(System.in); System.out
/**
* Created by Ranjan Yadav on 11.10.2016.
*/
public class BinaryToDecimal {
public static void main(String[] args) {
java.util.Scanner read = new java.util.Scanner(System.in);
System.out.println("Enter a binary number: ");
int binary = read.nextInt();
int total = 0;
int n = 1;
int c = 0;
int number = 0;
while (binary != 0) {
c = binary % ((int) Math.pow(10, n));
binary = binary / 10;
number = c * (int)(Math.pow(2, (n - 1)));
total += number;
++n;
}
System.out.printf("The decimal of the binary is %d", total);
}
}
您将n增加1,并同时将二进制数除以10提升到n。因此,在第一次迭代后,您无法获取单元的二进制数字。为了解决这个问题,您需要在每次迭代中得到二进制模10(不是将10提升到n),并且还需要将二进制语句除以10 我简化了代码,并对代码进行了一些小的更改,以提高可读性。以下是更正的主要方法:
public static void main (String[] args){
java.util.Scanner read = new java.util.Scanner(System.in);
System.out.println("Enter a binary number: ");
int binary = read.nextInt();
int total = 0;
int n = 0;
int c = 0;
int number = 0;
while (binary != 0) {
c = binary % 10;
binary = binary / 10;
number = c * (int)(Math.pow(2, n));
total += number;
++n;
}
System.out.println("The decimal of the binary is " + total);
}
代码正在运行并产生所需的结果。如果您还有任何疑问,请告诉我。您可以使用
parseInt
方法解析整数:
java.util.Scanner read = new java.util.Scanner(System.in);
System.out.println("Enter a binary number: ");
String binary = read.nextLine();
int decimal = Integer.parseInt(binary, 2); // 2 here means the string "binary" is in binary
如果不允许您使用该算法,请尝试以下算法:
total
,并将其设为0for(int i=0;i
Math.pow(2,binaryString.length()-1-i)
。否则什么也不做假设我输入1110111。第一次,
1110111%10
为1,binary
设置为111011。第二次,什么是111011%100
?谢谢,在所有时间里,c只能被10模化。在IDE调试器中逐步检查代码,并在每一步检查中间值。这将很快向您展示问题,您将学到一些东西。我用intellij调试了它,但我不知道如何调试works@RANJANYADAV你应该真正学会如何调试你的代码,在那之后你的编程技能将提高300%。快速启动: