1

首先,我是 Java 新手。

我正在尝试对用户指定的 txt 文件使用 Split() 函数。它应该使用空间拆分文件以输出字符串数组。我正在使用 JFileChooser 但我不知道如何对选定的 txt 文件执行拆分。我正在使用扫描仪来执行此操作。

请如果有人可以完成代码,由于某种原因我无法理解它:-/

到目前为止,我已经做到了:

                JFileChooser chooser = new JFileChooser("C:\\");
            chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

            FileNameExtensionFilter filter = new FileNameExtensionFilter(
            ".txt and .java files", "txt", "java");
            chooser.setFileFilter(filter);


            int code = chooser.showOpenDialog(null);
            if (code == JFileChooser.APPROVE_OPTION) {
            File selectedFile = chooser.getSelectedFile();
            Scanner input;
            try {
                input = new Scanner(selectedFile);

                while (input.hasNext()) {

                String[] splits = input.next().split(" ");
                } 
                } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 


}
            }
4

4 回答 4

2

如果您需要按空格字符拆分输入,则包含一个带空格的字符串,而不是空字符串。代替

String[] splits = f.split("");

String[] splits = f.split(" ");  // One space

正如其他人指出的那样,f未在您的块中声明。您必须将其声明为 aString并使用您Scanner将输入读入f然后使用split.

于 2013-02-27T23:44:37.930 回答
0
f.split("");

或者

f.split("[\\s]+");

使用制表符和双空格确保安全。

于 2013-02-27T23:45:58.890 回答
0

是什么f?它没有在任何地方声明,除非在之前使用过之后作为异常声明,这是没有意义的。

你的 while 循环应该这样写:

while (input.hasNextLine()) {

    String line = input.nextLine();
    String[] splits = line.split(" ");
    // put the result of split somewhere
}
于 2013-02-27T23:46:46.503 回答
0
    while (input.hasNext()) {

        String[] splits = f.split("");

        input.next();
    }

    System.out.println(f);

首先,splits从来没有使用过。其次,input.next()永远不会存储在变量中。另外,我不知道是什么f。尝试这样的事情:

    while (input.hasNext()) {

        String[] splits = input.next().split(" ");
        someList.add(splits);

    }

您可以声明someListnew ArrayList<String[]>().

于 2013-02-27T23:47:04.210 回答