我写了'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。
答案 0 :(得分:2)
它只是希望你返回一个“默认”值,以防你的循环永远不会被执行(也就是说:如果数组中没有元素)。您可以返回null
或String
(或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;
}
此代码与您的代码相同,但不使用变量。
作为旁注,有一个循环似乎没什么意义,因为它在内循环的第一次迭代时返回。您的逻辑可能存在错误。