我有一个至少有三个元素的锯齿状数组,我需要解析前五个元素,用空格填充任何空值。
// 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 = " ";
}
虽然上述代码在编译期间不会生成错误,但引用whiconcatF
或whiconcatG
的后续行在使用cannot find symbol
进行编译时会出错。
我尝试过使用forEach
和StringTokenizer
(将数组转换为分隔字符串后),但无法弄清楚如何在实例中使用默认值斑点4& 5.
我无法找出任何其他方法来做到这一点,也不知道为什么我的逻辑失败了。建议?
答案 0 :(得分: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 = " ";
}
答案 1 :(得分:4)
在whiconcatF
之外声明if-else
,使其超出可见范围。目前,两个String变量仅在if
和else
的范围内。一旦它移到if
之上,就会获得方法级别的范围(我希望整个片段不在任何其他块中),因此您可以在方法中的任何位置访问它们。
String whiconcatF = " "; // Default value
if (scrubbedInputTokens > 3) {
whiconcatF = scrubbedInputArray[3];
}
String whiconcatG = " "; // Default value
if (scrubbedInputTokens > 4) {
whiconcatG = scrubbedInputArray[4];
}
由于您现在有默认值,因此可以删除else
的{{1}}部分。