来自if / else语句的Java字符串赋值

时间:2013-04-01 02:15:39

标签: java string

我对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类标记。

任何帮助将不胜感激。谢谢。

3 个答案:

答案 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;

位于代码顶部。