我必须返回三角形区域和周长。我在主文件中创建了2个函数。
这是我的toString()
函数:
public String toString()
{
String printPerimeter = "The perimiter is " + perimeter;
String printArea = "The area is " + area;
return printPerimeter;
return printArea;
}
然后我将该代码上方的周长和区域设置为:
private double area;
private double perimeter;
我的二传手功能:
public double setPerimiter()
{
perimeter = (sideA + sideB + sideC);
return perimeter;
}
public double setArea()
{
double s = (sideA+sideB+sideC)/2.0;
area = Math.sqrt(s*((s-sideA)*(s-sideB)*(s-sideC)));
return area;
}
我确信我回来的方式有问题。但它一直在说Triangle.java:52: error: unreachable statement
行
return printPerimeter;
return printArea;
任何帮助?
答案 0 :(得分:4)
您只能从函数返回一个语句。
public String toString()
{
String printPerimeter = "The perimiter is " + perimeter;
String printArea = "The area is " + area;
return printPerimeter; <-- This will be returned
return printArea; <-- Program control will never reach here
and hence you are getting the error "unreachable code"
}
类似于两个setter,你需要有两个getter:
public String getPermiter()
{
String printPerimeter = "The perimiter is " + perimeter;
return printPerimeter;
}
public String getArea()
{
String printArea = "The area is " + area;
return printArea;
}
答案 1 :(得分:4)
连接两个字符串(参见@Aominè评论):
return printPerimeter + printArea;
或将两个字符串放在一个数组中并返回数组:
String[] dimens = new String[2];
dimens[0] = printPerimeter;
dimens[1] = printArea;
return dimens;
或分为两种方法toStringPerimeter()
和toStringArea()
。
答案 2 :(得分:2)
正如其他人所说,你只能有一个回复声明。所以这是将两个输出组合成一个
的另一种替代实现方式 public String toString()
{
StringBuilder sbuilder = new StringBuilder("The perimiter is");
sbuilder.append(perimeter);
sbuilder.append("\n");
sbuilder.append("The area is ");
sbuilder.append(area);
return sbuilder.toString();
}
答案 3 :(得分:1)
当return调用时,意味着它是方法的结尾,换句话说,你的第二个return语句永远不会发生。在这种情况下,当您实现toString方法时,您应该将两个消息都作为一个String返回。
public String toString() {
return "The perimiter is " + perimeter + "\nThe area is " + area;
}
或者您可以使用StringBuilder
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("The perimeter is ").append(perimeter);
sb.append("\n");
sb.append("The area is ").append(area);
return sb.toString();
}
如果你想通过某种方法将2个不同的对象包装起来,你需要将它包装在一些包装器中,它将允许你以后解包它。例如,它可以是String []或某个集合,甚至是一些自定义类TwoString,它声明了2个String字段。 列表示例
public List<String> getToStrings() {
List<String> result = new ArrayList<>();
result.add("The perimiter is " + perimeter);
result.add("The area is " + area);
return result;
}
但它不能用于toString(),它只是一个例子,如何返回超过1个对象&#39;。
答案 4 :(得分:0)
您can only have 1 return
声明。第二个将无法访问。