线程“main”中的异常java.util.InputMismatchException:对于输入字符串:“1234567891011”

时间:2015-06-22 11:40:13

标签: java

input:- 1 3 4 7 9 6 -1
output:- 4 6

我正在做的是从列表中打印偶数,每行一个。当遇到-1时,列表结束。以下是我的代码:

Scanner sc=new Scanner(System.in);
for (int i = 0; i <100000000; i++) {
int z=sc.nextInt();
    if(z != -1)
    {
        if(z%2==0)
        {
            System.out.println(z);
        }
    }
    else
    {
        System.exit(0);
    }
}

此代码用于最大输入,但在我将以下数字作为输入时给出错误。如何删除是这样的:

1234567891011
1234575135480
4357941369468
3246896421457
4356899643456
9753567886447
7545786575675
4675676788975
4523533536642
2412345546756
8678789685674
5632523414215
5435656765786
4676789879674
3562345245356
4675877956734
5452421425445
6758795674562
3421767655359
2124535456560
-1

3 个答案:

答案 0 :(得分:2)

你从Scanner.nextInt();电话中获得了这个例外。

  

由扫描程序抛出,表示检索到的令牌没有   匹配预期类型的​​模式,或者令牌不在   预期类型的​​范围。

抛出exeception因为值很高。 整数MAX_VALUE为2 ^ 31-1,所有值都太高了。

你应该使用长度为MAX_VALUE的2 ^ 63-1。

答案 1 :(得分:2)

InputMismatchException - 如果下一个标记与Integer正则表达式不匹配,或者超出范围。

Integer.MIN_VALUE:-2147483648

Integer.MAX_VALUE:2147483647

而不是int使用long

long z = sc.nextLong();

答案 2 :(得分:0)

int可以容纳的最大值是2147483647。

使用double。