我在阅读txt文件时遇到问题,并使用java的scanner.util找到一个单词/模式。 目前测试读数,我在每条线前面都是零。在那个问题之后,我仍然不确定如何搜索txt文件中的模式/单词。我还必须显示包含模式/单词的行。
public class SearchPattern {
public static void main(String[] args) throws IOException{
Scanner s = new Scanner(System.in);
String pattern;
String filename;
String[] text = new String[10];
System.out.println("Enter the filename");
filename = s.nextLine();
System.out.println("Enter the pattern you'd like to search");
pattern = s.nextLine();
// Print out each line that contains pattern
// may need an array to store StringS of lines with word
try{
s = new Scanner(new BufferedReader(new FileReader(filename)));
int x = 0;
while (s.hasNext()) {
text[x] += s.next();
x++;
}
}
finally {
if (s != null) {
s.close();
}
}
text[0] = "test";
System.out.println(text[0]);
for(String txt : text){
System.out.println(txt);
}
}
}
答案 0 :(得分:3)
你这样做:
text[x] += s.next();
这意味着:text[x]
为null
而非追加s.next()
将其替换为:
text[x] = s.next();
答案 1 :(得分:2)
s = new Scanner(new BufferedReader(new FileReader(filename)));
int x = 0;
while (s.hasNext()) {
text[x] += s.next();
x++;
}
你在这里做的是以我猜你不想做的方式迭代你的阵列。
现在,对于数组中的每个x位置,您正在编写
text[x] = text[x] + s.next();
但您可能想要做的是为数组中的每个位置提供扫描仪下一个值的值。在代码中
text[x] = s.next();
这也可以写成
for((int x = 0; s.hasNext(); x++)
text[x] = s.next();
希望这会有所帮助。祝你好运!