0

我对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();

错误是当我尝试将变量 bigInput 和 smallInput 转换为 char 数组时,编译器无法识别它们。早些时候我没有 if/else 语句来确定较大的字符串,它工作正常。我使用了 print 语句,并且在我通过 if/else 语句之前,可以识别字符串 bigInput 和 smallInput。

s1 和 s2 也是我之前解析的另一个 String 中的其他 String 类标记。

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

4

3 回答 3

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();
于 2013-04-01T02:16:47.463 回答
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();
于 2013-04-01T02:17:56.223 回答
0

定义

String bigInput;
String smallInput;

在代码的顶部。

于 2013-04-01T02:20:33.977 回答