【问题标题】:Returning java string instead of returning null返回java字符串而不是返回null
【发布时间】:2014-07-28 09:49:58
【问题描述】:

我编写了方法 'charCount()' 来返回字符串 '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。

【问题讨论】:

  • chc 在范围之外不可用。你可以在 for 循环之前声明 chc。
  • 如果您的目标是返回一个字符串,描述数组中每个字符串中每个字符的频率,则此方法的逻辑将无法实现。一旦你修复了逻辑,在方法末尾有return null 的要求可能会变得无关紧要。 (在循环中间调用return 意味着两个循环永远不会执行超过一次。)

标签: java string null return


【解决方案1】:

它只是想让你返回一个“默认”值,以防你的循环永远不会被执行(又名:如果数组中没有元素)。您可以返回nullString(或String 的子类,但都没有)。

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

【讨论】:

  • 我非常了解变量范围,我已经尝试了循环之外的两个地方(现在已编辑),但 netbean 仍然希望返回 null 进行编译。
  • 我从你那里得到的是 return null 在这里是可以的,以防数组为空'return null'是活动的。作为编程新手,这对你来说是一个很好的教训。我已经编辑了代码,请确认它现在可以返回字符串“chc”。如果不是,那么需要在代码中进行哪些更改才能返回“chc”。
  • 它总是希望您返回 somethingnull 或继承自 String 的类型。另请注意,您 必须 初始化局部变量,因此您不会编译。你不能写return nullreturn chcreturn "chc"
【解决方案2】:

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;
} 

此代码与您的代码等效,但不使用变量。

附带说明,循环似乎没有多大意义,因为它会在内部循环的第一次迭代中返回。你的逻辑可能有错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    相关资源
    最近更新 更多