[英]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.