好的,所以我有这个奇怪的问题,我正在尝试获取一个文件来输入几个类。这是方法,其中大部分已被注释掉。在指定的点,我需要放入一个多字符串。但是,当.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
答案 0 :(得分:1)
由于Scanner#nextInt
不使用换行符,因此紧接1001
之后的换行符将传递到nextLine
语句,并且您的团队名称将显示为空。
在阅读下一行之前,您需要使用此字符。您可以使用:
fileReader.nextLine(); // consume newline
team.setTeamName(fileReader.nextLine());