2015-06-22 69 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

相關問題