我最后不需要任何退货声明。但否则它不会编译。
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;
}
}
答案 0 :(得分:2)
我最后不需要任何退货声明。
实际上,如果您的getSubstrings
方法被声明为返回String
(正如您所做的那样),那么您需要return
语句。 Java语言规范说你做了。
如果您不打算使用结果,那么您应该将返回类型声明为void
...并且您不需要return
语句。
public void getSubstrings() {
// no 'return' required
}
但是,现在您的方法名称具有误导性。传统的“获得......”可以归还某些东西。这就是“吸气者”所做的事。
答案 1 :(得分:1)
这取决于您真正打算使用getSubstrings
方法做什么。你声明它返回String
,但实际上并不是你的意图。
按照惯例,Java方法上的getX
方法返回对象上的属性X
,或者根据对象的属性计算的内容。在这里,我希望getSubstrings
返回List<String>
,一个子字符串列表,在这种情况下,您的方法应该创建一个新的List<String>
,将子字符串添加到该列表(而不是打印它们,然后返回列表,如下:
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));
}
}