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

返回java字符串而不是返回null,java,string,null,return,Java,String,Null,Return,我编写了方法“charCount()”以返回字符串“chc”,但netbean强制我返回null。“returnnull”是否也阻止我在这个方法之外使用“chc”,或者它返回得很好。作为java新手,我感到困惑 // static String chc ; public static String charCount(String [] a){ String chc ; for (int i = 0; i < a.length;

我编写了方法“charCount()”以返回字符串“chc”,但netbean强制我返回null。“returnnull”是否也阻止我在这个方法之外使用“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
}  
//静态字符串chc;
公共静态字符串charCount(字符串[]a){
字符串chc;
for(int i=0;i

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

它只是希望您返回一个“默认”值,以防您的循环从未执行过(即:如果数组中没有元素)。您可以返回
null
String
(或
String
的子类,但这些都没有)

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

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;
} 
公共静态字符串charCount(字符串[]a){
for(int i=0;i
此代码与您的代码等效,但不使用变量


作为旁注,拥有一个循环似乎没有多大意义,因为它在内部循环的第一次迭代中返回。您的逻辑可能有错误。

chc在范围外不可用。您可以在for循环之前声明chc。如果您的目标是返回一个字符串,描述数组中每个字符串中每个字符的频率,那么此方法的逻辑将无法实现这一点。一旦您修复了逻辑,在方法末尾使用
返回null
的要求可能就变得无关紧要了。(在循环的中间调用<代码>返回<代码>意味着这两个循环将不会执行一次以上)。我很清楚变量范围,我已经尝试过循环之外的两个地方(现在都被编辑了),但是NETBE仍然需要返回null。我从这里得到的是返回null是可以的。如果数组为空,“return null”处于活动状态。对于编程来说,这是一个很好的教训。我已经编辑了代码,请确认现在它可以返回字符串“chc”。如果没有,那么需要在代码中进行什么更改才能返回“chc”。它总是希望您返回一些内容:要么
null
,要么是
String
或从
String
继承的类型。还要注意,您必须初始化局部变量,这样您所拥有的就不会被编译。您不能写入
返回null
返回chc
返回“chc”