0

状況

アイテムの数が異なるさまざまな char[] 配列があります。それらの処理中に「OutOfBounds」エラーを回避するために、それらを標準化したいと考えています。例えば:

私の配列には次の項目があります: "5;9" --> どのように表示したいか: "0,0,0,0,5,9" ("0" から 6 項目まで)

私が試したこと:

char[] myarray1 = mystring1.toCharArray();
...
for(int i=0; i<6; i++){
        myarray1[i] = 0;
        if(i<myarray1.length-1){
            myarray1[i] = myarray1[i];
        }else{
            myarray1[i] = 0;
        };
    };

まさにそのエラーを引き起こすため、私のコードは失敗しました...

誰かが私を助けてくれることを願っています:)ありがとう!

4

3 に答える 3

2

ソリューションが機能しない理由は、すべてに同じ配列を使用しているためです。の後char[] myarray1 = mystring1.toCharArray();の長さmyarray1は 2 であるため、ループ内でエントリ 2、3、4、および 5 を単純に割り当てることはできません。さらに、文字 '0' を文字列に含める場合は、ゼロをアポストロフィで囲む必要があります。

次のようにソリューションを修正できます。

char[] myNewArray = new char[6];
int myarrayIndex = 0;
for(int i=0; i<6; i++)
{
    if(i < (myNewArray.length - myarray1.length)) {
        myNewArray[i] = '0';
    } else {
        myNewArray[i] = myarray1[myarrayIndex++];
    };
};

System.out.println(myNewArray); //Will print out: 000059

より簡単な解決策は次のとおりです。

myarray1 = String.format("%6s", mystring1).replace(' ', '0').toCharArray();
于 2013-04-10T17:00:04.283 に答える
0

最初に 0 を埋めようとしても、エラーは修正されません。次に、ロジックが正しくありません (サイズを 6 と仮定) myString.length()。と の要点がわかりませんmyarray1[i] = myarray1[i];

とにかく、整数サイズのすべての配列は、 Java仕様に従ってゼロで初期化されます。一方、他の値で埋めたい場合は、Arrays.fill()を試してください。

于 2013-04-10T16:57:53.360 に答える