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に、ブロックで宣言されていません。として宣言し、StringyourScannerを使用して入力を に読み込みf次に を使用する必要がありますsplit

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

また

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

タブとダブルスペースで安全に。

于 2013-02-27T23:45:58.890 に答える
0

とはf? 以前に使用された後の Exception を除いて、どこにも宣言されていません。これは意味がありません。

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);

    }

someListのように宣言できnew ArrayList<String[]>()ます。

于 2013-02-27T23:47:04.210 に答える