【发布时间】:2017-05-21 14:23:27
【问题描述】:
我是编程初学者。我目前正在学习如何将记事本中的文本逐行转换为数组。记事本中文本的一个实例,
我是一名高中生
我喜欢香蕉和鸡肉
我有 2 只狗和 3 只猫
等等..
在这种情况下,数组[1] 将是字符串“我喜欢香蕉和鸡肉”。 记事本中的行可以更新,我希望数组是动态/灵活的。我尝试使用扫描仪来识别每条线并尝试将它们传输到阵列。请参考我的代码:
import java.util.*;
import java.io.*;
import java.util.Scanner;
class Test
{
public static void main(String[] args)
throws Exception
{
File file = new File("notepad.txt");
Scanner scanner = new Scanner(file);
String line;
int i = 0;
int j = 0;
while (scanner.hasNextLine()) {
i++;
}
String[] stringArray = new String[i];
while (scanner.hasNextLine()) {
line = scanner.nextLine();
stringArray[j] = line;
j++;
}
System.out.println(stringArray[2]);
scanner.close();
}
}
我不确定为什么会出现运行时错误,我尝试了另一种方法,但仍然没有产生我想要的结果。
【问题讨论】:
-
请发布您的错误信息
-
您可能遇到了无限循环。对吗?
-
array[1]必须是二维的才能包含“我爱香蕉和鸡肉”。否则这将只是“I”后面的空格,即第二个字符。 -
@user8 为什么?空格是字符串中完全有效的部分。我怀疑问题出在这里:
scanner.hasNextLine()被使用了两次。需要重新初始化才能重新使用。 -
实际上,正如 Mureinik 指出的那样,
scanner.hasNextLine()是一个无限循环,因为从未调用过nextLine。
标签: java arrays string file java.util.scanner