0

誰かがこのコードに穴がある理由を教えてもらえますか:array [0] [4]?

public class Random{ 

    public static void main (String []args){

        String [][] array={{"This is a test. A hole here"}};

        for(int i=0;i<array.length;i++){
            String temp=array[i][0];

            array[i]=temp.split("[\\:., ]");
        }

        System.out.print(array[0][4]);
    }
}

それでも、区切り文字( "[\:。、] +")にプラス記号を追加すると、正しい出力が得られます。

public class Random{ 

    public static void main (String []args){

        String [][] array={{"This is a test. A hole here"}};

        for(int i=0;i<array.length;i++){
            String temp=array[i][0];
            array[i]=temp.split("[\\:., ]+");
        }

        System.out.print(array[0][4]);
    }
}

プラス記号がこの穴を取り除き、この問題を解決する理由はありますか?どんな提案やコメントも受け付けています。はい、私は初心者です。

4

1 に答える 1

1

あなたarray[i]=temp.split("[\\:., ]");の文字列はここで分割されます:

This is a test. A hole here
    ^  ^ ^    ^^ ^    ^

したがって、で空の文字列を取得しますarray[4]

これによりarray[i]=temp.split("[\\:., ]+");、「。」が1つの「分割ポイント」に結合され、そのため、間に分割されません。

于 2012-04-14T18:52:31.467 に答える