我有一个让我心烦意乱的问题。我有一个 .txt 文件,看起来像
fiat,regata,15*renault,seiscientos,25*
在我的代码中,我有这个
Scanner sc=new Scanner(new File("coches.txt");
sc.useDelimiter("[,*]");
while(sc.hasNext()){
marca=new StringBuffer(sc.next());
modelo=new StringBuffer(sc.next());
marca.setLength(10);
modelo.setLength(10);
edad=sc.nextInt();
coche=new Coche(marca.toString(),modelo.toString(),edad);
coches.add(coche);
}
这里的问题是 While 循环工作了三次,所以第三次 marca=\n 并且它以 a 停止java.util.NoSuchElementException
。那么,如何使用我的分隔符在最后一个 * 中停止 de 循环并避免它进入那个额外/有问题的时间?
我已经尝试过类似的东西
while(sc.next!="\n")
我也试过这个,但不起作用
sc.useDelimiter("[,\*\n]");
解决了!!!
我终于找到了解决方案,部分归功于 user1542723 的建议。解决方案
是:
String linea;
String [] registros,campos;
File f=new File("coches.txt");
FileReader fr=new FileReader(f);
BufferedReader br=new BufferedReader(fr);//ALL this need Try Catch that I'm not posting
while((linea=br.readLine())!=null){
registros=linea.split("\\*");
}
for (int i = 0; i < registros.length; i++) {
campos=registros[i].split(",");
marca=campos[0];
modelo=campos[1];
edad=Integer.parseInt(campos[2]);//that's an Int, edad means Age
coche=new Coche(marca.toString(),modelo.toString(),edad);
coches.add(coche);
}
}
感谢所有帮助过我的人。