3

我在读取 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);
      }
   }
}
4

2 回答 2

3

你做:

text[x] += s.next();

这意味着:text[x]null你追加s.next()

将其替换为:

text[x] = s.next();
于 2013-02-12T22:23:15.700 回答
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();

希望这可以帮助。祝你好运!

于 2013-02-12T22:32:57.640 回答