我有一個打破我的想法的問題。我有一個txt文件,看起來像沒有 n的Java掃描儀分隔符 n
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);
}
這裏的問題是,雖然循環工作三次,所以第三次馬卡= \ n並以java.util.NoSuchElementException
停止。那麼,如何使用我的分隔符來阻止最後一個循環*並避免它進入額外/有問題的時間?
我已經嘗試過的事情一樣
while(sc.next!="\n")
我也triyed這並不起作用
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);
}
}
謝謝大家誰幫助了我。
好吧,我這樣做,但我仍然有同樣的問題。 – MBRebaque
夥計,它不工作 – MBRebaque
如果你添加任何空格,該怎麼辦?像'sc.useDelimiter(「[,\\ * \\ s +]」);'? – jlordo