【问题标题】:How can i get rid of RETURN statement? [closed]我怎样才能摆脱 RETURN 语句? [关闭]
【发布时间】:2023-04-01 18:57:01
【问题描述】:

最后我不需要任何 return 语句。但否则它不会编译。

public class Word2 {

    private String word;

    public Word2(String word) {
        this.word = word;
    }

    public String getSubstrings() {
        for(int i=0; i<word.length(); i++) {
            System.out.println(word.substring(0,i+1));
        }

        return null;
    } 
}

【问题讨论】:

  • public void getSubstrings()
  • 我建议在询问之前做一些研究。 :)

标签: java return


【解决方案1】:

最后我不需要任何 return 语句。

实际上,如果您的 getSubstrings 方法被声明为返回 String(正如您所做的那样),那么您确实需要一个 return 语句。 Java 语言规范说你可以这样做。

如果您不打算使用结果,那么您应该将返回类型声明为void ...并且您不需要return 语句。

    public void getSubstrings() {
        // no 'return' required
    }

但是,现在您的方法名称具有误导性。 “get...”返回某些东西是惯例。这就是“吸气剂”所做的。

【讨论】:

    【解决方案2】:

    这取决于你真正打算用你的getSubstrings 方法做什么。你声明它返回String,但这实际上不是你的意图。

    按照惯例,Java 方法上的getX 方法会返回对象上的X 属性,或者根据对象的属性计算得出的值。在这里,我希望getSubstrings 返回一个List&lt;String&gt;,一个子字符串列表,在这种情况下,您的方法应该创建一个新的List&lt;String&gt;,将子字符串添加到该列表(而不是打印它们),然后返回列表,如下所示:

    public List<String> getSubstrings() {
        List<String> substrings = new ArrayList<>();
        for(int i=0; i<word.length(); i++)
        {
            substrings.add(word.substring(0,i+1));
        }
        return substrings;
    }
    

    如果您确实想将子字符串打印到System.out,那么您应该给您的方法一个更具描述性的名称,例如printSubstrings,并给它一个void返回类型,这将声明您不'不从方法返回任何东西。

    public void printSubstrings()
    {
    
        for(int i=0; i<word.length(); i++)
        {
            System.out.println(word.substring(0,i+1));
        }
    
    } 
    

    【讨论】:

      猜你喜欢
      • 2021-04-17
      • 2012-12-26
      • 1970-01-01
      • 2021-01-27
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2022-12-18
      相关资源
      最近更新 更多