返回java字符串而不是返回null

时间:2014-06-07 03:48:34

标签: java string null return

我写了'charCount()'方法来返回String'chc',但是netbean迫使我返回null。 'return null'是否也禁止使用此方法之外的'chc',或者它被很好地返回。对Java不熟悉我很困惑。

           //  static String chc ;

public static String charCount(String [] a){

             String chc ;

   for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a[i].length(); j++) {
            char ch = a[i].charAt(j);
            int charcout = a[i].length();
            chc=  Character.toString(ch)+""+Integer.toString(charcout)+" ";
            //  String chc=  ch + "" + charcout + " ";
            return chc;  
            //System.out.print(chc);
        }
    } 
    return null; //NETBEAN IS FORCING ME TO WRITE THIS TO AVOID COMPILE TIME ERROR
}  

我需要帮助来纠正此代码以避免返回null。

2 个答案:

答案 0 :(得分:2)

它只是希望你返回一个“默认”值,以防你的循环永远不会被执行(也就是说:如果数组中没有元素)。您可以返回nullString(或String的子类,但不包含任何内容。)

你不能在那里使用chc,因为chc是在你的内部循环范围内定义的。如果您想了解更多相关信息,请查看“变量范围”。

答案 1 :(得分:0)

Java局部变量必须在使用前进行初始化。编译器无法确定循环是否会返回值,或者即使它将迭代。

但是!

为什么你甚至使用变量......消除它!

public static String charCount(String [] a){
    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a[i].length(); j++) {
            char ch = a[i].charAt(j);
            int charcout = a[i].length();
            return Character.toString(ch)+""+Integer.toString(charcout)+" ";
        }
    } 
    return null;
} 

此代码与您的代码相同,但不使用变量。

作为旁注,有一个循环似乎没什么意义,因为它在内循环的第一次迭代时返回。您的逻辑可能存在错误。