我从文件中读取,这样做:错误读取文本文件在Java中
cod_order (int)
cod_cliente (int)
cod_pizza (int)
num_pizza (int)
cod_pizza
num_pizza
...
$FINE
这里有一个例子:
1
1107
02
1
01
5
03
2
$FINE
我创造了这个方法从这个文本文件中读取:
private void loadOrdini(String fname){
try{
BufferedReader reader = new BufferedReader(new FileReader(fname));
String cod_ordine = reader.readLine();
while(cod_ordine!=null){
String cod_cliente=reader.readLine();
Cliente cl=listaclienti.get(Integer.parseInt(cod_cliente));
String cod_pizza=reader.readLine();
while(!cod_pizza.equals("$FINE")){
String n_pizze=reader.readLine();
Ordine ord = new Ordine(Integer.parseInt(cod_pizza),Integer.parseInt(n_pizze));
cl.getListaOrdini().put(Integer.parseInt(cod_ordine), ord);
cod_pizza=reader.readLine();
}
cod_ordine=reader.readLine();
}
}
catch(IOException ioe){
ioe.printStackTrace();
}
}
问题是该方法负载到HashMap中listaordini唯一的数字03
和2
而以前的数字不考虑,为什么?
import java.util.*;
public class Cliente{
private String name;
private String address;
private Map<Integer,Ordine> listaordini;
public Cliente(String n,String addr){
name=n;
address=addr;
listaordini=new HashMap<Integer,Ordine>();
}
public String getName(){
return name;
}
public String getAddr(){
return address;
}
public Map<Integer,Ordine> getListaOrdini(){
return listaordini;
}
public String toString(){
String temp="";
temp+="Nome Cliente: "+name;
temp+="\nIndirizzo: "+address;
return temp;
}
}
即使这个suggets问题仍然调用reader.readLine(),您正在移动到文件中的下一行的相同
如果我正确理解你的代码,你的地图'listaordini'应该是您的订单ID映射到比萨的订单? – Mac
是的,这是对的 – Mazzy