gpt4 book ai didi

java - 为什么 c 值在给定代码中重复?

转载 作者:行者123 更新时间:2023-12-02 09:09:06 24 4
gpt4 key购买 nike

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.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);
}

代码正在运行并产生预期的结果。如果您还有任何疑问,请告诉我。

关于java - 为什么 c 值在给定代码中重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39970540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com