1

プログラムはユーザーに数字を要求することになっており、入力が数字でなくなるまでループします(数字の入力がある場合は繰り返します)。これまでの私のコード:

import java.util.*;

public class MataVarden
{
    public static void main(String[] args) throws Exception
    {   
        Scanner sc = new Scanner(System.in);    
        ArrayList<Integer> Values = new ArrayList<Integer>(); 

        System.out.print("Input a number: ");
        Values.add(sc.nextInt()); 

        Collections.sort(Values);
        System.out.println("Values sorted: " + Values);
    }
}

数字以外が入力された場合に入力を中断するには、何をする必要がありますか?

4

1 に答える 1

1

このような場合は、whileループを使用してください。

System.out.println("Input a number");
String line = "";
while (sc.hasNextLine() && !(line = sc.nextLine()).equals("")) {
    try {
        int val = Integer.parseInt(line);
        values.add(val);
    } catch (NumberFormatException e) {
        break;
    }

    System.out.println("Input a number");
}

さて、ここで何が起こっているのかについての説明があります:-

  • sc.hasNextLine()読み取る入力があるかどうかを確認します。はいの場合は、次のテストに進みます
  • !(line = sc.nextLine()).equals("")次の入力がであるかどうかをチェックしますempty string。空の文字列の場合、条件は失敗し、ループは終了します。
  • メソッドを使用して入力を読み取っているのでnextLine()、を使用して整数に解析する必要がありますInteger.parseInt(line);
  • try-catchのような入力を処理するために、それをブロックで囲む必要があります。これは整数に解析されず、例外をスローします。この場合、から"abc"抜け出します。while loopcatch block
  • sc.nextInt()入力から改行トークンを読み取らないため、使用していないことに注意してください。したがって、ループをいつ終了するかを知る方法はありません。

補足として、コードでは常にコーディング規則に従う必要があります。変数名は小文字で始める必要があります。

于 2012-11-29T20:27:13.103 に答える