扫描txt文件时在每行之前获取null

时间:2013-02-12 22:20:26

标签: java

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

2 个答案:

答案 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();

希望这会有所帮助。祝你好运!