2013-04-01 55 views
0

我对java相当陌生,而且我一直试图调试这段代码一段时间。我觉得必须有一些我不完全理解Strings的东西,所以我认为我会咬紧牙关,然后问Stackoverflow。来自if/else语句的Java字符串赋值

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

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

回答

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(); 
+0

ahh谢谢。我现在正面临着自己的问题。这样做 – Nopiforyou

+1

如果有帮助,请接受答案 – Abi

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(); 
0

在你的代码的顶端定义

String bigInput; 
String smallInput;