2012-12-03 100 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(); 

更新:修正代码格式化