Java 设置属性/实例变量并在toString()中打印
我必须返回三角形的面积和周长。我在主文件中创建了两个函数。 这是我的Java 设置属性/实例变量并在toString()中打印,java,return,Java,Return,我必须返回三角形的面积和周长。我在主文件中创建了两个函数。 这是我的toString()函数: public String toString() { String printPerimeter = "The perimiter is " + perimeter; String printArea = "The area is " + area; return printPerimeter; return printArea; } 然后
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语句
return printPerimeter;
return printArea;
有什么帮助吗?一个函数只能返回一条语句
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"
}
一个函数只能返回一条语句
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"
}
您可以返回一个
语句。第二个将无法访问。您1返回
语句。第二个将无法访问。将两个字符串连接起来(请参见@Aominècomment):
或者将这两个字符串放入一个数组并返回数组:
String[] dimens = new String[2];
dimens[0] = printPerimeter;
dimens[1] = printArea;
return dimens;
或者分为两个方法toStringPerimeter()
和toStringArea()
将两个字符串连接起来(请参见@Aominècomment):
或者将这两个字符串放入一个数组并返回数组:
String[] dimens = new String[2];
dimens[0] = printPerimeter;
dimens[1] = printArea;
return dimens;
或者分为两个方法toStringPerimeter()
和toStringArea()
,正如其他人所说,您只能有一个return语句。因此,这里有另一个替代实现,将两个输出合并为一个输出
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();
}
正如其他人所说,您只能有一个return语句。因此,这里有另一个替代实现,将两个输出合并为一个输出
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();
}
当return调用时,这意味着它是一个方法的结束,换句话说,您的第二个return语句永远不会发生。在这种情况下,当您实现toString方法时,应该将两条消息作为一个字符串返回
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();
}
如果由于某种方法,您希望有两个不同的对象,您需要将其包装在某个包装器中,它将允许您稍后将其展开。例如,它可以是String[]或某个集合,甚至是某个自定义类TwoString,该类声明了2个字符串字段。
带列表的示例
public List<String> getToStrings() {
List<String> result = new ArrayList<>();
result.add("The perimiter is " + perimeter);
result.add("The area is " + area);
return result;
}
public List getToStrings(){
列表结果=新建ArrayList();
结果。添加(“周长为”+周长);
结果。添加(“面积为”+面积);
返回结果;
}
但是它不会像toString()那样工作,它只是一个如何返回“多个对象”的示例。当return调用时,它意味着它是一个方法的结束,换句话说,您的第二个return语句永远不会发生。在这种情况下,当您实现toString方法时,应该将两条消息作为一个字符串返回
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();
}
如果由于某种方法,您希望有两个不同的对象,您需要将其包装在某个包装器中,它将允许您稍后将其展开。例如,它可以是String[]或某个集合,甚至是某个自定义类TwoString,该类声明了2个字符串字段。
带列表的示例
public List<String> getToStrings() {
List<String> result = new ArrayList<>();
result.add("The perimiter is " + perimeter);
result.add("The area is " + area);
return result;
}
public List getToStrings(){
列表结果=新建ArrayList();
结果。添加(“周长为”+周长);
结果。添加(“面积为”+面积);
返回结果;
}
但它不会像toString()那样工作,它只是一个如何返回“多个对象”的示例。您不能这样做。第二条语句返回printArea代码>将永远不会执行。我想您希望为toString()
返回值返回printpermiture+printparea
。不相关,但是为什么setter不接受参数并返回值呢?在我看来更像是getter,尽管设置了一个类变量,但您不能这样做。第二条语句返回printArea代码>将永远不会执行。我想您希望为toString()
返回值返回printpermiture+printparea
。不相关,但是为什么setter不接受参数并返回值呢?在我看来更像是getter,尽管第一个解决方案设置了类variable1+,但我不会创建一个数组来存储两个对象。似乎不必要,而且会导致开销。同样,如果OP采用这种方法返回dimens
会失败,因为它是一个字符串数组,而不是一个字符串。是的,我只是假设OP会将方法声明中的返回类型更改为String[]。好的,我明白了,但即使如此,toString的定义是它返回一个对象的字符串表示形式,而不是字符串数组或任何其他类型。@Aominè我同意你的看法,可能该方法最好称为toString Garray()或类似的方法。我猜OP需要为周长和面积使用单独的字符串是有原因的,使用数组可以提供这种灵活性。就像两种不同的方法一样。取决于OP需要。1+对于第一个解决方案,但我不会创建一个数组来存储两个对象。似乎不必要,而且会导致开销。同样,如果OP采用这种方法返回dimens
会失败,因为它是一个字符串数组,而不是一个字符串。是的,我只是假设OP会将方法声明中的返回类型更改为String[]。好的,我明白了,但即使如此,toString的定义是它返回一个对象的字符串表示形式,而不是字符串数组或任何其他类型。@Aominè我同意你的看法,可能该方法最好称为toString Garray()或类似的方法。我猜OP需要为周长和面积使用单独的字符串是有原因的,使用数组可以提供这种灵活性。就像两种不同的方法一样。取决于OP需求。1+的有效解决方案,但出于好奇,是否有使用StringBuilder而不是字符串的特定原因?通常,在循环中连接字符串时,您更喜欢使用StringBuilder
而不是String
。1+是一个有效的解决方案,但出于好奇,是否有使用StringBuilder而不是字符串的特定原因?通常,在concatena时,您更喜欢StringBuilder
而不是String