java - 我得到一个意外的整数值

标签 java debugging

我正在调试一个程序,其输出应如下所示(尽管缩进有点奇怪):

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

我完全不知道最后一行是如何/为何出现的 为“-727380968” 任何帮助将不胜感激。

最佳答案

这可能会溢出 int,其最大值约为 20 亿。尝试使用 long 而不是 int

这里是准确显示 int 最大值的 javadoc: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

关于java - 我得到一个意外的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782432/

相关文章:

debugging - 如何在 QT Creator 中启用反向调试?

java - 在 Java 中打印特殊字符,如 FS 和 ESC。像 Notepad++

java - Maven-从 lib 文件夹构建时删除 Jar

ios - 放松 segue 干扰 shoe segue

c# - 为什么 Xamarin Debugger 会跳过断点/代码?

debugging - 突然我无法在VS2010中调试任何东西

java - 从 lambda 内部设置局部变量值

java - date_trunc org.postgresql.util.PSQLException : ERROR: syntax error at or near "$1"

java继承: distinguish between types of inherited classes

c++ - 异常抛出错误