1

文字列配列の内容を印刷すると、出力も「null」と印刷されます。これの何が問題なのかわかりません。これが出力です。私が期待するのは、「null」のない出力です

null(wa?>=0)nullnull*(wo?>=0)nullnull*(4*wa?+7*wo?>=50)nullnull*(d1=10)nullnull*((d2=1)+(k=2))nullnull

ご協力に感謝いたします。Java のスキルは初心者レベルで、2 週間前に始めました。

実際のコードは次のとおりです。

        String[] arrStr = new String[50];
        int countStr = 0;

        for (int i = 0; i < para.length; i++) {
            if (para[i] == '(') {
                count = count + 1;
            }
            if (para[i] == ')') {
                count = count - 1;
            }
            if (count > 0) {
                arrStr[countStr] = arrStr[countStr] + para[i];
            } else {
                if (para[i] == ')') {
                    arrStr[countStr] = arrStr[countStr] + para[i];
                    countStr += 1;
                } else {
                    countStr += 1;
                    arrStr[countStr] = arrStr[countStr] + para[i];
                    // System.out.println(para[i]);
                }
            }
        }
        System.out.println(countStr);

        for (int i = 0; i < countStr; i++) {
            System.out.print(arrStr[i]);
        }

この部分の前に、Word 文書から次の文字列を読み取っています。

(wa?>=0)AND(wo?>=0)AND(4*wa?+7*wo?>=50)AND(d1=10)AND((d2=1)+(k=2))

問題は次の行が原因である可能性があると思います:

arrStr[countStr] = arrStr[countStr] + para[i]; 

は最初は null で、要素を追加するのでarrStr[countStr]、それを として保存しnull+para[i]ます。それは可能だと思いますか?

私が試したときのように:System.out.println(arrStr[0]);私は出力を次のように取得します

null(wa?>=0)
4

3 に答える 3

3
System.out.println(null + "Bla");

印刷しnullBlaます。String として表される null は「null」です。ここでの問題は、最初はすべての String[] が null で構成されていることです。最初にそれらを初期化する必要があります。通常、

Arrays.fill(arrStr, "");

すべきです。

于 2013-05-27T16:04:22.357 に答える
0

印刷中にいずれかの要素arrStrが null の場合、それを忠実に印刷します。

コードの詳細を知らなくても、配列内のどの要素も null にならないようにするか (長さが一致し、 で要素をスキップしていないことを確認するか、要素を出力する前にarrStr確認してください。null

于 2013-05-27T15:45:55.800 に答える
0

配列の値を初期化せず、arrStrサイズを割り当てるだけなので、配列の各要素は null になります。配列の要素に値を代入するときは、その値 (null) を の値と連結しますpara[i]

配列を使用する前に初期化する必要があります。

String[] arrStr = new String[50];
for (int i = 0; i < arrStr.length; i++) {
    arrStr[i] = "";
}
于 2013-05-27T16:04:46.523 に答える