如何在Java中将锯齿状数组解析为单个变量?

时间:2013-10-16 11:52:06

标签: java arrays parsing

我有一个至少有三个元素的锯齿状数组,我需要解析前五个元素,用空格填充任何空值。

 // 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 = " ";
}

虽然上述代码在编译期间不会生成错误,但引用whiconcatFwhiconcatG的后续行在使用cannot find symbol进行编译时会出错。

我尝试过使用forEachStringTokenizer(将数组转换为分隔字符串后),但无法弄清楚如何在实例中使用默认值斑点4& 5.

我无法找出任何其他方法来做到这一点,也不知道为什么我的逻辑失败了。建议?

2 个答案:

答案 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变量仅在ifelse的范围内。一旦它移到if之上,就会获得方法级别的范围(我希望整个片段不在任何其他块中),因此您可以在方法中的任何位置访问它们。

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

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

由于您现在有默认值,因此可以删除else的{​​{1}}部分。