2

私はすでにここにある私のものと同様の質問を閲覧しましたが、私にとってうまくいくものは見つかりませんでした.

基本的に、私がしなければならないことは、文字列でいっぱいのファイルを行ごとに読み取り、それらを行ごとに出力し、次に単語ごとに出力することです。.split を使用してこれを実現し、個々の文字列の配列を作成したいと思います。

たとえば、私のファイルには次のように書かれています:
The fat cat was black
The cow jump over the moon
I came to say hello world

ファイルを読み取り、ファイルを行ごとに印刷する方法を理解しましたが、単語ごとに印刷する方法がわかりません。これら 3 つはそれぞれ独自の機能を持っているため、何かを配置する場所でそれが何らかの役割を果たすかどうかはわかりません。

これは私の方法でこれまでに持っているものです:

static public void printWords( String [ ] arr, int count )
{
    String [] s2 = arr[0].split( " " ); 

    for( int i = 0; i < count; i++)
    {
        System.out.println(  s2 [i] );
    }

    System.out.println();  
}

しかし、これは私にエラーを与えています。私はいくつかのことを切り替えましたが、そのたびに行だけを印刷するか、特定のポイントで停止します。私が主に持っている唯一のものは、これに関連するメソッド呼び出しです。これは問題ではありません。誰かが何か洞察を持っているなら、それは大歓迎です。ありがとうございました!

編集:

私のコードの「カウント」は、読んでいるファイルの行数です。したがって、これは 3 です。

必要なものを取得するためにコードを微調整しましたが、最初の文のみが出力されます。

String [] s2 = arr[0].split( " " );
    for (int j = 0 ; j < count ; j++)
    {

        for( int i = 3; i < s2.length; i++)
        {

        System.out.print(  s2 [i] + " " );
        }
    System.out.println();

    }

}

たとえば、これは
The fat cat was black

と表示されるだけです。私はその周りに別のループを構築しようとしています(私のコードで示されているように)が、ファイルの次の行に移動するのではなく、「The fat cat was black」を3回印刷するだけです。

4

4 に答える 4

0

カウントは、これが宿題の問題である場合に意味のある行数にのみ使用できます。あなたは解決策に近づいていましたが、分割ステートメントが間違った場所にありました。

文字列配列 arr にはファイルからの文字列が含まれ、カウントはファイルから取得された行数であるため、 arr 配列を通過する反復子の制限です。別の反復子を使用して s2 配列を通過することで、arr.

これを試して:

static public void printWords( String [ ] arr, int count )
{
    for (int j = 0 ; j < count ; j++)
    {
        String [] s2 = arr[j].split( " " );
        for( int i = 0; i < s2.length; i++)
        {
            System.out.print(  s2 [i] + " " );
        }
        System.out.println();
    }
}
于 2014-05-07T20:15:55.207 に答える
0

具体的に空白で区切る。

public void split() {
            ArrayList<String> myArray=new ArrayList<>();
            myArray.add("The fat cat was black");
            myArray.add("The cow jumped over the moon");
            for (String strLine : myArray) {
                String[] strWord = strLine.split("[\\s']");
                for (String s : strWord) {
                    System.out.println(s);
                }
            }

        }

ここで[\\s']は、空白、タブ、改行を表します。

于 2016-10-06T13:37:18.007 に答える