[英]Putting names from a file into an array is causing an infinite loop
我有一個文本文件“名稱”,其中包含10個名稱,每個名稱在其自己的行上。 我要做的是將這些名稱放入數組“ anArray”中。 只是為了檢查我是否做得很好,我輸出了一行,如您所見。
這是我用來嘗試執行此操作的代碼:
public static void main(String[] args) throws FileNotFoundException
{
File file=new File("names.txt");
Scanner my_input= new Scanner(file);
String [] anArray;
anArray = new String[10];
String a = my_input.nextLine();
while(my_input.hasNextLine())
{
for(int i = 0; i<10;i++)
{
while (!(a.equals("\n")))
{
anArray[i] = a;
System.out.println("Element" + i + "of the array is: " + anArray[i]);
}
i++;
a=my_input.next();
}
}
my_input.close();
}
但是,此代碼失敗,發生的結果是“數組的元素0為:名稱1”被無限次輸出,“名稱1”是文本文件中的第一個名稱。 我不知道我在做什么錯,有人可以啟發我嗎?
最里面的while循環中的條件永遠不會改變,因此內容將無限期重復。
有一些東西可以改變這句話的價值
while (!(a.equals("\n")))
必須出現在循環的主體中,否則如果開始為true,則它將保持true。
當前,您的內部while
循環上有一個無限循環,您無需更新a
這樣一旦輸入就將永遠循環。 我認為您想檢查i
是否小於10
並且您的輸入仍然有更多行。 您可以通過單循環來實現。 try-with-resources
顯式關閉相比,我也更喜歡使用try-with-resources
。 您可以使用String.isEmpty()
防止出現空行。 就像是,
File file = new File("names.txt");
try (Scanner my_input = new Scanner(file)) {
String[] anArray = new String[10];
for (int i = 0; i < 10 && my_input.hasNextLine(); i++) {
String line = my_input.nextLine();
if (line.isEmpty()) {
continue;
}
anArray[i] = line;
System.out.printf("Element %d of the array is: %s%n", i, anArray[i]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.