字符串数组无法解析为变量

时间:2013-06-06 10:49:00

标签: java

在Java中是否有可能在已定义之后重新定义值(如在JavaScript中)?看看我的示例代码,我正在尝试重新定义String数组。

    public String[] checkIfLengEnglish (){
        String language =  Locale.getDefault().getDisplayLanguage() ;
        String LG = Locale.getDefault().getLanguage();

        if(LG.contains("en")){
            String language[] = {"English"}; // Redefining
        }
        else {
            String Language[] = {"English/"+ Language,Language,"English"}; // Redefining
        }

        return Language[];
    }

4 个答案:

答案 0 :(得分:4)

  1. 您在代码中使用多个范围内的多个类型重新定义Language(一次在方法级别,在if-block / else-block中两次)。不要那样做。
  2. 您无需添加[]来引用数组变量,请不要这样做。
  3. 由于您在if-block中声明了 in 数组,因此if-block中只有存在。要解决此问题,您需要在外面声明:

    String[] languages;
    if( LG.contains("en")){
        languages = new String[] {"English"};
    }else {
        languages = new String[] {"English/"+ Language,Language,"English"};
    }
    return languages;
    

    由于您不再使用初始化(只有在声明变量时才会发生)但是分配,您需要使用“长格式”来指定数组值,其中包括new String[]

  4. 另请注意,作为一般准则,方法和变量名称应以小写字母开头,而class / interface / enum名称应以大写字母开头。这在技术上并不是必需的,但遵循此指南将使您的代码更易于理解。

答案 1 :(得分:0)

语言[]在if / else语句中定义。您应该尝试将其置于

之上
String[] array = new String[];

   if(true){
       array = {"English"};
   }

   return array;

//虚拟示例

答案 2 :(得分:0)

重新编写您的代码&用于更好理解目的的变量

public String[] CheckIfLengEnglish (){
    String displayLanguage =  Locale.getDefault().getDisplayLanguage() ;
    String LG = Locale.getDefault().getLanguage();
    String arrayLanguages[];
    if( LG.contains("en")){
        arrayLanguages = {"English"};
        }else {
        arrayLanguages = {"English/"+ Language,Language,"English"};
    }
    return arrayLanguages ;
}

答案 3 :(得分:-1)

String [] Language = new String [];

如果 {

语言= { “英语”}

}

其他{

String Language [] = {“English /”+ Language,Language,“English”};      }

返回语言[];