从String数组中创建一个String,使其可读

时间:2016-02-13 13:37:23

标签: java arrays string

我得到的代码如下:

StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < encodeCharString.length; i++) {
    strBuilder.append(encodeCharString[i]);
}
String outputString = strBuilder.toString();
f = outputString.length();
if(...){
    String[] outStringCopy = outputString.split("");
    outputString = "";
    String[] outStrArr = new String[outStringCopy.length];
    while(f>0){
        outStrArr[outStringCopy.length-f-1] = outStringCopy[f-1];
        f--;
    }
    strBuilder = new StringBuilder();
    for (int i = 0; i < outStrArr.length; i++) {
        strBuilder.append(outStrArr[i]);
    }
    outputString = strBuilder.toString();
}
textArea.setText(outputString);

如果未执行if,则输出正确 如果执行if,则程序停止(textArea中没有文本) 当我进入调试模式时,它表示outputString没有任何“”,但它有一个带有正确文本的值Array。

3 个答案:

答案 0 :(得分:0)

如果没有关于错误输出的更多信息,我至少可以说,你应该在这里indexoutofboundsexception

while(f>=0){
    outStrArr[outStringCopy.length-f-1] = outStringCopy[f-1];
    f--;
}

当f为0时,您尝试访问outStringCopy [-1],这会引发运行时异常。

实际上,在第一次迭代中,f等于outputString长度,这与outStrArr长度相同。 所以outStrArr[outStringCopy.length-f-1]会导致outStrArr[-1],你应该在while循环的第一次迭代时出错。

答案 1 :(得分:0)

问题在于你的while循环:

    while(f>=0){
        outStrArr[outStringCopy.length-f] = outStringCopy[f-1];
        f--;
    }

尝试使用以下代码替换它:

 while(f>0){
      outStrArr[outStringCopy.length-f] = outStringCopy[f-1];
      f--;
    }

答案 2 :(得分:0)

如果您尝试撤消字符串,则可以使用StringBuilder.reverse()

if(...){
    strBuilder = new StringBuilder(outputString).reverse();
    outputString = strBuilder.toString();
}
textArea.setText(outputString);