我得到的代码如下:
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。
答案 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);