我正在调试一个程序输出应该是这样的程序,(虽然缩进有点不稳定):
Enter a number you dislike 9
9
X9
_________
81
x12345679
_________
Surprise 999999999
X1000
_________
"No Surprise"? 999999999000
这是我的代码:
import java.util.Scanner;
import java.lang.Math;
public class Prog76a
{
public static void main (String[] args)
{
Scanner keyboard = new Scanner(System.in);
//Prompting the user to enter a number
System.out.print("Enter a number you dislike ");
int num = keyboard.nextInt();
int numA = num * 9;
int numB = numA * 12345679;
int numC = numB * 1000;
System.out.println(" ");
System.out.println(" " + num);
System.out.println(" X" + num);
System.out.println(" ____________");
System.out.println(" " + numA);
System.out.println(" x" + 12345679);
System.out.println(" ____________");
System.out.println("Surprise " + numB);
System.out.println(" X" + 1000);
System.out.println(" ____________");
System.out.println("\"No Surprise\"? " + numC);
}
}
这就是它的结果:
Enter a number you dislike 9
9
X9
____________
81
x12345679
____________
Surprise 999999999
X1000
____________
"No Surprise"? -727380968
我绝对不知道这个世界是如何/为什么最后一行出现的 be" -727380968" 任何帮助都将非常感激。
答案 0 :(得分:3)
这可能是溢出int
,其最大值约为20亿。尝试使用long
代替int
。
以下是javadoc,其中显示了int
的最大值:https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#MAX_VALUE
这是我发现的一个快速链接,它显示了为什么基础位数学将一个大数字转换为计算机读取的负数:https://www.cs.drexel.edu/~introcs/F2K/lectures/5_Scientific/overflow.html