1

我想根据该行是否包含问号将文本文件的元素分成不同的数组。这是我所得到的。

    Scanner inScan = new Scanner(System.in);

    String file_name;
    System.out.print("What is the full file path name?\n>>");
    file_name = inScan.next();

    Scanner fScan = new Scanner(new File(file_name));
    ArrayList<String> Questions = new ArrayList();
    ArrayList<String> Other = new ArrayList();

    while (fScan.hasNextLine()) 
    {
        if(fScan.nextLine.indexOf("?"))
        {
            Questions.add(fScan.nextLine());
        }

        Other.add(fScan.nextLine());
    }
4

1 回答 1

2

那里有很多问题

  • nextLine() 实际上返回下一行并在扫描仪上移动,因此您需要读取一次
  • indexOf 返回一个 int,而不是 boolean,我猜你更习惯于 C++?您可以改用以下任何一种:
    • indexOf("?") >=0
    • 包含(“?”)
    • 匹配(“\?”)等。
  • 请遵循 java 的方式并使用 camelCase 进行 vars ......

代码

public static void main(String[] args) throws FileNotFoundException {

    Scanner scanner = new Scanner(new File("foo.txt"));
    List<String> questions = new ArrayList<String>();
    List<String> other = new ArrayList<String>();
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        if (line.contains("?")) {
            questions.add(line);
        } else {
            other.add(line);
        }
    }
    System.out.println(questions);
    System.out.println(other);
}

foo.txt

line without question mark
line with question mark?
another line
于 2012-11-02T03:00:22.500 回答