0

問題は、Seyyed という名前のクラスを作成して、seyyed という名前のメソッドを含めることです。main メソッドの String 配列に何人かの名前を保存し、"Seyyed" で始まる名前の数を計算する必要があります。次のコードを書きました。しかし、出力は予想外です。問題は 10 行目で、「名前を入力してください:」という文が最初に 2 回出力されます。

import java.util.Scanner;

public class Seyyed {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter the number of names :");
        int n = in.nextInt();
        String[] names = new String[n];
        for (int i = 0; i < names.length; i++) {
            System.out.println("Enter a name : ");
            names[i] = in.nextLine();
        }
        int s = seyyed(names);
        System.out.println("There are " + s + " Seyyed");
        in.close();
    }

    static int seyyed(String[] x) {
        int i = 0;
        for (String s : x)
            if (s.startsWith("Seyyed"))
                i++;
        return i;
    }

}

たとえば、3 つの名前を追加するために 3 を入力すると、プログラムは「名前を入力してください:」という文を 2 回繰り返し、出力は次のようになります。

Enter the number of names :3
Enter a name : 
Enter a name : 
Seyyed Saber
Enter a name : 
Ahmad Ali
There are 1 Seyyed

3 つの名前を入力することを期待しているときに、2 つの名前を入力できます。

4

4 に答える 4

2

数値を入力するときは、Enter キーも押します。これにより、最初の nextLine() メソッドによって取得される「\n」入力値が実行されます。これを防ぐには、コードに nextLine() を挿入して、int 値を読み取った後に「\n」文字を使用する必要があります。

Scanner in = new Scanner(System.in);
        System.out.print("Enter the number of names :");
        int n = in.nextInt();
        in.nextLine();
        String[] names = new String[n];

同じ問題に対する良い答え: https://stackoverflow.com/a/7056782/4983264

于 2019-07-11T08:37:27.067 に答える