此程序访问文本文件,文本元素以逗号分隔。元素在我创建的变量中注册。除了最后一个。然后发生错误。该程序可以正常使用扫描器类的默认空白分隔符(文本文件可以正常调整),但是当我使用逗号作为分隔符时失败。有人可以提供一些见解。
文字数据:
smith,john,10
stiles,pat,12
mason,emrick,12
代码:
public void openFile(String f)
{
try{
x = new Scanner(new File(f));
x.useDelimiter(",");
} catch(Exception e){
System.out.println("File could not be found please check filepath");
}
}
public boolean checkNameRoster()
{
openFile(file);
boolean b = false;
while(x.hasNext())
{
String lName = x.next().trim();
**String fName = x.next().trim();**
String grade = x.next().trim();
if(fName.equalsIgnoreCase(firstName) && lName.equalsIgnoreCase(lastName) && grade.equalsIgnoreCase(grade))
{
b = true;
}
}
closeFile();
return b;
}
答案 0 :(得分:0)
问题依赖于您在功能x.useDelimiter(",");
的{{1}}上致电Scanner
这一事实。
由于您的文字数据是:
openFile()
smith,john,10
stiles,pat,12
mason,emrick,12
将其视为:
Scanner
那么执行代码时会发生什么:
"smith,john,10\nstiles,pat,12\nmason,emrick,12"
要解决此问题,您可以修改文件并使用1: x.hasNext() ? Yes
x.next().trim() => "smith"
x.next().trim() => "john"
x.next().trim() => "10\nstiles"
2: x.hasNext() ? Yes
x.next().trim() => "pat"
x.next().trim() => "12\nmason"
x.next().trim() => "emrick"
3: x.hasNext() ? Yes
x.next().trim() => "12"
x.next().trim() => Error!
更改所有\n
,或使用第一个,
获取所有行,另一个获取令牌,如下所示:
Scanner