给定高值时程序崩溃

时间:2017-09-12 05:31:31

标签: java int double java.util.scanner system

我的编码,我试图制作一个不会因用户的输入而崩溃的程序,程序将分割并打印出答案。我搜索过但找不到任何帮助! 对于小于100000000或199999999的数字,编码可以正常工作。

Scanner in = new Scanner(System.in);
double n1 = in.nextInt();
double n2 = in.nextInt();
double n3 = n1/n2;
System.out.println(n3);

3 个答案:

答案 0 :(得分:2)

您正在使用in.nextInt(),它将读取一个值小于2^31 -1的整数(当然它会转换为double)。但是当您提供超过(2^31) - 1 12589691475的值时,nextInt()无法读取它们,因为它们是非常大的数字。

改为使用in.nextDouble()

答案 1 :(得分:1)

使用

in.nextDouble();

in.nextLong();

答案 2 :(得分:0)

对于任意大数字,请使用java.math.BigIntegerjava.math.BigDecimal

Scanner in = new Scanner(System.in);
BigInteger n1 = new BigInteger(in.nextLine());
BigInteger n2 = new BigInteger(in.nextLine());
BigInteger n3 = n1.divide(n2);
System.out.println(n3);