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");
        }
  }
}

ユーザーが整数ではなく文字列を入力しようとした場合、キーボードから配列に入力された数値を parseInt にする方法を教えてください。

4

3 に答える 3

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
        //}
    }
  }
}
于 2012-12-03T02:25:10.683 に答える
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();

更新: 修正されたコード形式

于 2018-02-06T02:52:30.463 に答える
0

Integer.parse(String s) は、s が整数でない場合、NumberFormatException をスローします。そのため、string から int への変換を try-catch 句で囲みます

于 2012-12-03T02:21:37.197 に答える