我对java很新,我一直试图调试这段代码已经有一段时间了。我认为必须有一些我不完全了解字符串的东西,所以我想我会咬紧牙关并在Stackoverflow上询问。
int s1Len = s1.length();
int s2Len = s2.length();
if(s1Len < s2Len){
String bigInput = s2;
String smallInput = s1;
}
else{
String bigInput = s1;
String smallInput = s2;
}
char[] bigCharArr = bigInput.toCharArray();
char[] smallCharArr = smallInput.toCharArray();
错误是当我尝试将变量转换为char数组时,编译器无法识别变量bigInput和smallInput。之前我没有if / else语句来确定更大的字符串,它运行正常。我已经使用了print语句,并且字符串bigInput和smallInput被识别,直到我通过if / else语句。
s1和s2也是我之前解析过的另一个String的其他String类标记。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:4)
当你在块中声明变量时,它是该块的本地变量,并且不能从块外部访问
在块之外声明你的字符串
String bigInput = "";
String smallInput = "";
int s1Len = s1.length();
int s2Len = s2.length();
if(s1Len < s2Len){
bigInput = s2;
smallInput = s1;
}
else{
bigInput = s1;
smallInput = s2;
}
char[] bigCharArr = bigInput.toCharArray();
char[] smallCharArr = smallInput.toCharArray();
答案 1 :(得分:2)
您在if / else块中声明了变量。这意味着它是if / else块的本地,并且只能在if / else块的括号之间看到。
尝试
int s1Len = s1.length();
int s2Len = s2.length();
String bigInput = "";
String smallInput = "";
if(s1Len < s2Len){
bigInput = s2;
smallInput = s1;
}
else{
bigInput = s1;
smallInput = s2;
}
char[] bigCharArr = bigInput.toCharArray();
char[] smallCharArr = smallInput.toCharArray();
答案 2 :(得分:0)
定义
String bigInput;
String smallInput;
位于代码顶部。