2

文字列を 2 つの小さな文字列に分割しようとしています。簡単そうに見えますが、なぜかわかりません。私が分割しようとしているものの例はこれです:

AA
BB
DD
FF
TT
EE
SE
GR

これらの値は現在 ArrayList にあり、2 つの arraylist に分割したい

A                A
B                B
D                D

私はこれを試しました

prse = calls.get(t).split(""); //also tried prse = calls.get(t).split("", -1);
            call1.add(prse[0]);
            call2.add(prse[1]);

しかし、それは私の配列リストを空の文字で埋めました。(印刷 [] [, ] [, , ] [, , ] [, , , ])

それで、私は試しました

    String split = calls.get(t).substring(0,1); //This is 285 that is puking
    String split2 = calls.get(t).substring(1,2);
                System.out.println(split);
                call1.add(split);
                System.out.println("1: " + call1);
                call2.add(split2);
                System.out.println("2: " + call2);

これはある程度までは機能しますが、その後恐ろしい死を遂げます。

1: [F, P, T, B, F, D, S, G, G, G, Z, S, Q, E, F, H, L, P, O, L, G, B, V, F, W, Q, T, H, G, E, R, T, Y, C, G, D, C, H, C, A]
2: [o, G, U, U, Y, Y, T, T, T, T, T, R, E, S, G, J, H, C, H, H, H, G, C, J, H, D, G, J, H, D, R, G, V, C, G, V, V, D, V, V]

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
        at java.lang.String.substring(String.java:1946)
        at print.Reader.ffy(Reader.java:285)
        at print2.Print2.main(Print2.java:48)

誰かがこれを行うためのより良い方法を提案できますか (または、私が間違っていることを説明してください)? 注: 分割文字を独自の別の ArrayList 文字列に入れたい (後で使用するため) ので、charArray は使用しません。

4

3 に答える 3

1

あなたはこのようなことをすることができます:

String inData = prse = calls.get(t);
call1.add("" + inData.charAt(0));
call2.add("" + inData.charAt(1));

これにより、1番目と2番目の文字が直接取得され、文字列に変換されます。

char配列リストが必要な場合は、文字列に変換する必要はありません。これは、出力で何をしたいかによって異なります。

StringBuilderはcharを.appendし、結果をtoStringすることができます。

お役に立てれば!

于 2013-01-09T18:49:42.483 に答える
1
        prse = calls.get(t).split("");
        call1.add(prse[0]);
        call2.add(prse[1]);

空白文字列 => "" で分割すると、最初に得られる文字列は空白 ("") になります。例: "AB" prse[0] = "", prse[1]="A" ,prse[2]="B"

于 2013-01-09T19:02:22.477 に答える
1
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1

^^ は、部分文字列メソッドに渡されたインデックス 1 が範囲外であることを意味します。つまり、配列内 (おそらく "AV" の直後) に 0 文字または 1 文字しかない文字列があります。

また、「substring(int beginIndex, int endIndex)」はこれに適した方法ですが、代わりに「charAt(int index)」を使用しないのはなぜですか?

于 2013-01-09T19:09:55.003 に答える