2015-06-22 64 views
0
input:- 1 3 4 7 9 6 -1 
output:- 4 6 

什么我做的是从列表打印偶数号码,每行一个。列表在遇到-1时结束。下面是我的代码:异常线程“main” java.util.InputMismatchException:对于输入字符串:“1234567891011”

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

2^31-1的是最大值,你值太高 – Zelldon

+0

尝试对这些值使用'long long int' – coderzz027

+0

@ coderzz027你的意思是“长”吗?没有'long long int''这样的东西。 – f1sh

回答

2

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

Integer.MIN_VALUE的:-2147483648

Integer.MAX_VALUE的:2147483647

不是int使用长

long z = sc.nextLong(); 
0

最大值int可以支持为2147483647

使用双。

2

您从Scanner.nextInt();调用中获得了怀疑。

由Scanner抛出,表明检索到的令牌不匹配 图案与期望类型,或该标记出 范围的预期的类型。

exeception是因为值过高而抛出。 整数MAX_VALUE是2^31-1,你所有的值都太高。

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

相关问题