设置属性/实例变量并在toString()中打印

时间:2017-09-15 21:28:33

标签: java return

我必须返回三角形区域和周长。我在主文件中创建了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;

任何帮助?

5 个答案:

答案 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声明。第二个将无法访问。