所以我的问题是,当我用我的4个数字编写并且它们类似于987579739 90273946 38403649 34839204739374839
时,我得到了这个例外:
Exception in thread "main" java.util.InputMismatchException: For input string: "34839204739374839"
at java.util.Scanner.nextInt(Scanner.java:2123)
at java.util.Scanner.nextInt(Scanner.java:2076)
at linetest2.main(linetest2.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
这是我的计划:
public class linetest {
public static void main(String[] arg) {
java.util.Scanner tastatur = new java.util.Scanner(System.in);
int a, x, b, y;
a = tastatur.nextInt();
x = tastatur.nextInt();
b = tastatur.nextInt();
y = tastatur.nextInt();
if (a * x + b == y)
System.out.println("LINJE");
else if (a * x + b > y)
System.out.println("UNDER");
else
System.out.println("OVER");
}
}
如何让它读取这些高数字呢?任何建议将不胜感激:)。
答案 0 :(得分:0)
34839204739374839
对于nextInt()
而言太大了,但nextLong()
应该能够阅读它。当然,您必须将nextLong()
的输出存储在long
变量中。
long a, x, b, y;
a = tastatur.nextLong();
x = tastatur.nextLong();
b = tastatur.nextLong();
y = tastatur.nextLong();
这将允许您使用更大的数字,但long
也有其限制。
答案 1 :(得分:0)
您为int
分配一个大号,整数不能保持这个大值。
您可能希望使用long
代替int
,而不是使用nextLong()
而不是nextInt()
答案 2 :(得分:0)
您可以通过两种方式实现:
您可以将字符串转换为BigInteger:
String d = tastatur.next();
BigInteger b = new BigInteger(d);
或者甚至长时间阅读
long d = tastatur.nextLong();