我正在开发一个程序,它在 jlist 中显示我的 Stock 类中的一个对象。我让它工作,我可以把这些信息写入一个文件,但是当我试图从同一个文件中读取时,我的程序就死机了。我想知道我的代码是否设置错误以从文件中读取,因为这是我第一次尝试这样做。我要做的就是从文件中保存的变量中为我的 Stock 对象设置变量。谢谢
public void getData(){
StringTokenizer row;
Stock aStock = new Stock();
try{
BufferedReader inbuffer = new BufferedReader(new FileReader(fileName));
String inputString;
inputString = inbuffer.readLine();
while(inputString != null){
row = new StringTokenizer(inputString, DELIMTER);
aStock.setStockName(row.nextToken());
aStock.setStockQuantity(Integer.parseInt(row.nextToken()));
aStock.setPurchasePrice(Double.parseDouble(row.nextToken()));
aStock.setCurrentPrice(Double.parseDouble(row.nextToken()));
}
inbuffer.close();
}
catch(IOException ioe){
JOptionPane.showMessageDialog(null, ioe.getMessage(), "File Read Error", JOptionPane.ERROR);
}
}
最佳答案
您需要一个 if
block 而不是 while
block ,因为您只想将值设置为一个 Stock
对象。
替换
while(inputString != null)
与
if(inputString != null)
此外,将返回类型从 void
更改为 Stock
并返回 aStock
以便您可以使用返回值。
public Stock getData() {
StringTokenizer row;
Stock aStock = new Stock();
try {
BufferedReader inbuffer = new BufferedReader(new FileReader(fileName));
String inputString;
inputString = inbuffer.readLine();
if (inputString != null) {
row = new StringTokenizer(inputString, DELIMTER);
aStock.setStockName(row.nextToken());
aStock.setStockQuantity(Integer.parseInt(row.nextToken()));
aStock.setPurchasePrice(Double.parseDouble(row.nextToken()));
aStock.setCurrentPrice(Double.parseDouble(row.nextToken()));
}
inbuffer.close();
} catch (IOException ioe) {
JOptionPane.showMessageDialog(null, ioe.getMessage(), "File Read Error", JOptionPane.ERROR);
}
return aStock;
}
关于java - 当我调用 BufferedReader 时,我的程序卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62202674/