我编写了一个java代码,用于将十进制数转换为二进制数。它运行良好但输入为1024或更多时输出错误。例如:输入为1024输出为1410065408。
import java.util.Scanner;
public class story {
public static void main(String args[])
{
Scanner scan=new Scanner(System.in);
System.out.println("Enter a positive decimal number");
binary bin=new binary();
System.out.println(bin.calculate(scan.nextInt()));
}
}
public class binary {
public long calculate(int num)
{
int i=1;
long result=0;
while(num>0)
{
result=result+(num%2)*i;
i*=10;
num/=2;
}
return result;
}
}
答案 0 :(得分:0)
您遇到此问题,因为i
的数据类型为int
,即溢出。
解决方案是简单地将i
的数据类型从int
更改为long
。
以下是更正后的代码段:
public static final class binary {
public long calculate(int num) {
long i = 1; //Note the change at this line
long result = 0;
while (num > 0) {
result = result + (num % 2) * i;
i *= 10;
num /= 2;
}
return result;
}
}
<强>输入:强>
1024
<强>输出:强>
10000000000
答案 1 :(得分:0)
错误在类型i中,它应该很长。
<强> CODE:强>
import java.util.Scanner;
public class story {
public static void main(String args[])
{
Scanner scan=new Scanner(System.in);
System.out.println("Enter a positive decimal number");
System.out.println(calculate(scan.nextInt()));
}
public static long calculate(int num)
{
long i=1;
long result=0;
while(num>0)
{
result=result+(num%2)*i;
i*=10;
num/=2;
}
return result;
}
}
<强>输出:强>
Enter a positive decimal number
1026
10000000010
答案 2 :(得分:0)
“i”变量超过输入1024及以上的最大整数值。 请参阅此处:Why 10000000*1000 giving 1410065408 in java?