1

私は現在、2 つのチームの名前とスコアの入力を要求するプログラムに取り組んでいます。最初のチームの名前と 9 つのスコアの入力を要求すると、スキャナーは問題なく入力を受け入れます。ただし、for ループの後、スキャナーは 2 番目のチームの名前の入力を受け入れません。これはプログラム全体ではありませんが、問題が発生するまでのすべてのコードを含めました。forループの前に配置すると、team2はユーザー入力を問題なく受け入れるため、forループと関係があるのではないかと思います。

import java.util.Scanner;
public class sportsGame{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String team1;
        String team2;
        int team1Scores[] = new int[9]
        int team1Total = 0;
        int team2Scores[] = new int[9];
        int team2Total = 0;

        System.out.print("Pick a name for the first team: ");
        team1 = input.nextLine();

        System.out.print("Enter a score for each of the 9 innings for the "
                + team1 + " separated by spaces: ");
        for(int i = 0; i < team1Scores.length; i++){
            team1Scores[i] = input.nextInt();
            team1Total += team1Scores[i];
        }
        System.out.print("Pick a name for the second team: ");
        team2 = input.nextLine();
    }
}
4

1 に答える 1

5

Scanner の nextInt メソッドは行をスキップせず、int のみをフェッチします。したがって、最初のループが終了すると、まだ 1 つの改行文字が残っており、input.nextLine() は空白の文字列を返します。ループの後に input.nextLine() を追加して、この空白行をスキップし、次のように問題を解決します。

for(int i = 0; i < team1Scores.length; i++){
    team1Scores[i] = input.nextInt();
    team1Total += team1Scores[i];
    }
input.nextLine();
//rest of your code
于 2012-10-10T14:19:30.613 に答える