0

さて、私はファイルを取得していくつかのクラスに入力しようとしているという奇妙な問題を抱えています。メソッドは次のとおりです。そのほとんどはコメント アウトされています。指定された時点で、複数単語の文字列を入力する必要があります。ただし、.next() は機能しますが、.nextLine() は失敗します。

Javaが初めてなので、これが明らかな場合は申し訳ありません。

public void readWeeklyData (String fileName) 
{
  try{
        File file = new File(fileName);
        Scanner fileReader = new Scanner(file);

        _leagueName = fileReader.nextLine(); //Outputs String properly despite spaces
        _leagueID = fileReader.nextInt();
        _numTeams = fileReader.nextInt();
       _numWeek = fileReader.nextInt();

      int i = 0;
      int j = 0;

       // while(i < _numTeams)
       // {
            Team team = new Team();
            team.setTeamID(fileReader.nextInt());
            System.out.println(team.getTeamID()); //Outputs 1011 properly
            team.setTeamName(fileReader.nextLine()); //Outputs nothing, with or without the while loops in comments. Yet when changed to fileReader.next(), it gives the first word of the team name.
           // team.setGamesWon(fileReader.nextInt());
          //  team.setGamesLost(fileReader.nextInt());
          //  team.setRank(fileReader.nextInt());

          // while(j < 3)
          //  {
           //     Bowler bowler = new Bowler();
         //       bowler.setBowlerId(fileReader.nextInt());
           //     bowler.setFirstName(fileReader.nextLine());
           //     bowler.setLastName(fileReader.nextLine());
          //      bowler.setTotalGames(fileReader.nextInt());
           //     bowler.setTotalPins(fileReader.nextInt());

           //     team.setBowler(j, bowler);
           //     j++;
           // }   

           // j = 0;

          //  _teams[i] = team; 
          //  i++;
        //}

   }

   catch(IOException ex)
    {
        System.out.println("File not found... ");
   }
}

ファイル (余分な入力は無視します。書式設定のためだけに存在するためです。これは、チームの 2 回の反復にすぎません。):

Friday Night Strikers
27408
4
0
1001
Fantastic Four
0
0
0
10011
Johnny
Blake
0
0
10012
Donald
Duck
0
0
10013
Olive
Oil
0
0
10014
Daffy
Duck
0
0
1002
The Showboats
0
0
0
10021
Walter 
Brown
0
0
10022
Ty
Ellison
0
0
10023
Gregory
Larson
0
0
10024
Sharon
Neely
0
0
4

1 に答える 1

1

は改行文字を消費しないためScanner#nextInt、直後の改行文字がステートメント1001に渡され、nextLineチーム名が空で表示されます。

次の行を読む前に、この文字を消費する必要があります。以下を使用できます。

fileReader.nextLine(); // consume newline
team.setTeamName(fileReader.nextLine());
于 2013-02-27T03:36:33.807 に答える