gpt4 book ai didi

Java,文件阅读器,进入无限循环

转载 作者:行者123 更新时间:2023-11-30 11:26:40 25 4
gpt4 key购买 nike

我写了一个程序来读取一个文件。它正确读取文件。我使用打印语句进行了测试。但是在读取文件的最后一行之后,程序并没有停止。它进入无限循环。我猜我的 while 循环一直在读取空白字符作为下一行。我不知道如何修复它。

如果我在 else 部分放置一个 break,它只会读取第一行并跳出 while 循环。我不确定为什么。

请帮帮我。

代码如下:

public static void InterpretMessageFromFile() throws FileNotFoundException{
File inputfile = new File("FilePath");
Scanner reader = new Scanner(inputfile);

try
{
while (reader.hasNextLine())
{
//if the type of order is add order to existing Order Book
if (reader.hasNext("A")){

reader.next();
String retrieve_ts = reader.next();
int ts = Integer.parseInt(retrieve_ts);
//int ts = Integer.parseInt(retrieve_ts, 2); //for binary file
String retrieve_id = reader.next();
int id = Integer.parseInt(retrieve_id);
//int id = Integer.parseInt(retrieve_id ,2); // for binary file
String or_side = reader.next();
String retrieve_share = reader.next();
int share = Integer.parseInt(retrieve_share);
// int share = Integer.parseInt(retrieve_share, 2); //for binary file
String retrieve_price = reader.next();
int price = Integer.parseInt(retrieve_price);
//int price = Integer.parseInt(retrieve_price, 2); //for binary file
System.out.println("Add Order : Id is " + id );
AddOrderToExistingBook.AddNewOrder(id, ts, or_side, share, price);
}

//if it is cancel order
else if (reader.hasNext("X")){

reader.next();
String retrieve_ts = reader.next();
int ts = Integer.parseInt(retrieve_ts);
//int ts = Integer.parseInt(retrieve_ts, 2); //for binary file
String retrieve_id = reader.next();
int id = Integer.parseInt(retrieve_id);
System.out.println("Cancel Order : Id is " + id + " time stamp is : " + ts );
//int id = Integer.parseInt(retrieve_id, 2); //for binary file
//String retrieve_share = reader.next();
// int share = Integer.parseInt(retrieve_share, 2); // need to add back later, removing it for testing purposes
CancelOrder.CancelPartOfOrder(id, ts);
}

//if it is delete order
else if (reader.hasNext("D")){

reader.next();
String retrieve_ts = reader.next();
int ts = Integer.parseInt(retrieve_ts, 2);
String retrieve_id = reader.next();
int id = Integer.parseInt(retrieve_id, 2);

DeleteOrder.DeleteOrderFromBook(id, ts);


}
else{
// unexpected token.
// basically log as info and ignore.
}
}
}
finally
{
reader.close();
}
}

最佳答案

处理文件读取操作时,最好检查几个条件 -1)文件是否有下一行? 2) 下一行是否不为空。

while (reader.hasNextLine() && (line = reader.nextLine()) != null) 

然后您可以在您的代码中使用此字符串行

在您的代码中,虽然您通过 reader.next() 获取下一个值,但它不会推进指针。这就是循环永远不会退出的原因。

引用:Scanner

关于Java,文件阅读器,进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19713750/

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