0

是否可以在 Java 中重新定义已经定义的值(就像在 JavaScript 中一样)?看看我的示例代码,我正在尝试重新定义字符串数组。

    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

4 回答 4

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

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

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

另请注意,作为一般准则,方法和变量名称应以小写字母开头,类/接口/枚举名称应以大写字母开头。这在技术上不是必需的,但遵循本指南将使您的代码更易于他人理解。

于 2013-06-06T10:54:49.783 回答
0

Language[] 在 if/else 语句中定义。你应该试着把它放在上面

String[] array = new String[];

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

   return array;

// 虚拟示例

于 2013-06-06T10:52:44.510 回答
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 ;
}
于 2013-06-06T10:59:15.370 回答
-1

字符串[] 语言=新字符串[];

如果 {

语言={“英语”}

}

别的 {

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

返回语言[];

于 2013-06-06T11:01:27.777 回答