读取数万亿值的输入?

时间:2013-09-15 10:11:38

标签: java user-input

我想知道如何在没有错误的情况下读取My Java应用程序中从1到数万的数字。

这是我的代码的一部分:

Scanner sc = new Scanner(System.in);
System.out.print("Enter your money value : ");
long value = sc.nextInt();
System.out.print("Your money in String : "+value);

如果我输入一个从大约1到2.111.111.999的值,它可以正常工作但是 每次我运行并输入大于此值时,都会出现以下错误消息:

Exception in thread "main" java.util.InputMismatchException: For input string: "1000000000000"
at java.util.Scanner.nextInt(Scanner.java:2097)
at java.util.Scanner.nextInt(Scanner.java:2050)
at konversiangka.Konversiangka.main(Konversiangka.java:28)

Java结果:1

我猜这是一个“数据类型”错误。 我知道如果你想在长数据类型中存储万亿,你最后必须添加“L” 的价值,像这样,“1000000000000L”。但我不希望用户在程序中输入值时添加

那你可以帮我怎么做吗? 我感谢任何建议和更正,谢谢。

2 个答案:

答案 0 :(得分:3)

使用

long value = sc.nextLong();

代替。

错误的原因是可以放入int的最大值是2,147,483,647,即使您将变量声明为longScanner.nextInt()始终会尝试将数字转换为int

答案 1 :(得分:2)

你可以使用Tharwen提到的长或你可以使用java.math.BigDecimal。 BigDecimal是一个用于将十进制数保持为大(或小)的类。您可以在此处查看所有原始数据类型及其最大/最小大小http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Scanner sc = new Scanner(System.in);
System.out.print("Enter your money value : ");
BigDecimal value = sc.nextBigDecimal();
System.out.print("Your money in String : "+value);

Output:
Enter your money value : 271075217301782039710237102710521231.23
Your money in String : 271075217301782039710237102710521231.23
相关问题