2012-12-03 40 views
0
import java.util.Scanner; 

public class NumAverage { 

    public static void main (String [] args) 
    { 
     //int a,b; 
     int[] numbers = new int [10]; 

     Scanner numreader = new Scanner(System.in); 

     try 
     { 
      System.out.println("Enter 10 num"); 
      for (int i = 0; i < numbers.length; i++) 
       numbers[i] = numreader.nextInt(); 
       //numbers[i] = Integer.parseInt(s) 
      //for (int i = 0; i < numbers.length; i++) 
      //{ 
       //sum += numbers[i]; 
      //} 
     } 
     catch(NumberFormatException numfo) 
     { 
      System.out.println(numfo.getMessage() + "cannot be converted to integer"); 
     } 
    } 
} 

我怎樣才能得到我已經被從鍵盤inputed到數組是parseInt函數,如果用戶嘗試輸入一個字符串,而不是整數parseInt函數在一個陣列

+0

如何獲得只有有效的數字並丟棄字符串? – rendon

回答

0

Integer.parse的數字(字符串如果s不是整數,則拋出一個NumberFormatException異常。 所以圍繞字符串到int的轉換與一個try-catch子句

+0

因此,try catch子句中的try catch子句? – brennaboo

+0

不,將你的try catch移動到你的for循環 – AlexWien

+0

而不是numreader.nextInt(),而是使用numreader.nextLine()來代替它,並對它做一個parseInt。 – viclim

1

嘗試:

import java.util.Scanner; 

public class NumAverage { 

public static void main (String [] args) 
{ 
    //int a,b; 
    int[] numbers = new int [10]; 

    Scanner numreader = new Scanner(System.in); 
    System.out.println("Enter 10 num"); 
    for (int i = 0; i < numbers.length; i++) { 
     // Without the try and catch you get the appropriate exception, 
     // NumberFormatException in this case 
     String str = numreader.next(); 
     numbers[i] = Integer.parseInt(str); 

     //try { 
     // numbers[i] = Integer.parseInt(numreader.next()); 
     //} catch(NumberFormatException e) { 
     // number[i] = 0; // or whatever you want 
     //} 
    } 
    } 
} 
+0

嗯,這是工作,但我需要它可以選擇拋出一個NumberFormatException。那麼我應該走什麼路? – brennaboo

+0

讓我明白,如果數字格式不正確,你想拋出一個'NumberFormatException'?或多解釋一下。 – rendon

+1

對於homewoek assigment問題,它不是一個理想的代碼。一些tipps和提示幫助更多 – AlexWien

1

這是我會爲你做的情況下。

int[] numbers = new int[10]; 

Scanner numreader = new Scanner(System.in); 

System.out.println("Enter 10 numbers"); 

// Get User Input 
for (int i = 0; i < numbers.length; i++) { 
    try { 
     numbers[i] = Integer.parseInt((String) numreader.nextLine()); 
    } catch (NumberFormatException numFormatE) { 
     System.out.println(numFormatE.getMessage() + "cannot be converted to integer"); 
     i = i - 1; // Restart current iteration. 
    } 
} 
numreader.close(); 

// Loop through the number to get sum of the number. 
int sum = 0; 
for (int i = 0; i < numbers.length; i++) { 
    sum += numbers[i]; 
} 
System.out.println(sum); 

但是,如果你想總和在主迴路結合起來,這應該工作以及:

int[] numbers = new int[10]; 
int sum = 0; 

Scanner numreader = new Scanner(System.in); 

System.out.println("Enter 10 numbers"); 

// Get User Input 
for (int i = 0; i < numbers.length; i++) { 
    try { 
     numbers[i] = Integer.parseInt((String) numreader.nextLine()); 
    } catch (NumberFormatException numFormatE) { 
     System.out.println(numFormatE.getMessage() + "cannot be converted to integer"); 
     i = i - 1; // Restart current iteration. 
    } 
    sum += numbers[i]; // Add the number in loop 
} 
System.out.println(sum); 
numreader.close(); 

更新:修正代碼格式化