gpt4 book ai didi

java - 在 Java 中读取文本文件时出错

转载 作者:行者123 更新时间:2023-11-29 08:10:25 25 4
gpt4 key购买 nike

我必须从一个文件中读取,所以做了:

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();
}

}

问题是该方法仅将数字 032 加载到 HashMap listaordini 中,而之前的数字不是考虑因素。为什么?

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;
}

}

即使在这表明问题仍然存在

最佳答案

每次调用 reader.readLine() 时,都会移动到文件中的下一行。

因此,当你调用

Cliente cl=listaclienti.get(Integer.parseInt(reader.readLine()));

当您打算解析 1107 时,您实际上正在移动到下一行并得到 02。

关于java - 在 Java 中读取文本文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com