0

最小 3 つの要素を持つジャグ配列があり、最初の 5 つの要素を解析して、null をスペースで埋める必要があります。

 // there will ALWAYS be three elements 
String whiconcatC = scrubbedInputArray[0];
String whiconcatD = scrubbedInputArray[1];
String whiconcatE = scrubbedInputArray[2];

 // there MAY be a fourth or fifth element
if (scrubbedInputTokens > 3) {
String whiconcatF = scrubbedInputArray[3];
} else {
String whiconcatF = " ";
}
 //
if (scrubbedInputTokens > 4) {
String whiconcatG = scrubbedInputArray[4];
} else {
String whiconcatG = " ";
}

上記のコードはコンパイル中にエラーを生成しませんが、whiconcatForwhiconcatGを参照する後続の行は、 を使用したコンパイル中にエラーになりますcannot find symbol

forEachandを使用してみましStringTokenizerた (配列を区切られた文字列に変換した後) が、スポット 4 と 5 に値がない場合にデフォルト値を使用する方法がわかりません。

これを行う他の方法や、if ロジックが失敗する理由を理解できませんでした。提案?

4

2 に答える 2

5

これは、ローカル スコープがあり、括弧内で定義されているためです。したがって、ブラケットを閉じるとダイスに到達できなくなります。それらを外部で定義すれば、問題ありません。

String whiconcatC = scrubbedInputArray[0];
String whiconcatD = scrubbedInputArray[1];
String whiconcatE = scrubbedInputArray[2];
String whiconcatF = "";
String whiconcatG = "";


// there MAY be a fourth or fifth element
if (scrubbedInputTokens > 3) {
whiconcatF = scrubbedInputArray[3];   
} else {
whiconcatF = " ";
}
//
if (scrubbedInputTokens > 4) {
whiconcatG = scrubbedInputArray[4];
} else {
whiconcatG = " ";
}
于 2013-10-16T11:56:08.393 に答える
4

それらがそれを超えて見えるように、whiconcatF外側を宣言します。if-else現在、両方の文字列変数は、ifandelseのみのスコープ内にあります。の上に移動ifすると、メソッド レベルのスコープが取得されるため (このスニペット全体が他のブロック内にないことを願っています)、メソッド内のどこからでもアクセスできます。

String whiconcatF = " "; // Default value
if (scrubbedInputTokens > 3) {
    whiconcatF = scrubbedInputArray[3];
}

String whiconcatG = " "; // Default value
if (scrubbedInputTokens > 4) {
    whiconcatG = scrubbedInputArray[4];
}

これでデフォルト値ができたのでelse、両方のif.

于 2013-10-16T11:54:40.327 に答える