0

我应该制作一个包含方法和字符串格式的程序。情况是用户输入了一个新的树示例:Tree t = new Tree(27, 43.25, "Pine") 然后输入 t.describe() 并接收到这个输出“树号 27 的周长为 43.25 并且是种松树。”

这是我的代码:

public class Tree{

  int serial;
  double circumference;
  String species;


  Tree(int serial, double circumference, String species) {

    this.serial = serial;
    this.circumference = circumference;
    this.species = species; 
  }
  public String describe() {
    String.format("Tree number %d has a circumference of %.2f and is of species %s.", serial, circumference, species);

    return describe();
  }
}

该程序只是炸毁了。谢谢你的帮助!

4

1 回答 1

6

问题是你在调用describe()inside describe(),没有什么能阻止它无限地调用自己。你一定会得到一个StackOverflowError.

这里的解决方案很简单——String.format返回String你想要的。就退货吧。

return String.format("Tree number %d has a circumference of %.2f and is of species %s.",
    serial, circumference, species);

另外,不要describe()从 with调用describe()。这就是它“炸毁”的原因。

于 2013-09-03T23:18:07.020 回答