【发布时间】:2021-02-12 23:57:48
【问题描述】:
我正在用 Java 编写代码,为变量 a、b、c 和一个计算椭圆体尺寸的标签输入数字。键入 Ellipsoid ex1 = new Ellipsoid ("Ex 1", 1, 2, 3);应该在交互中给我以下内容:
Ellipsoid "Ex 1" with axes a = 1.0, b = 2.0, c = 3.0 units has:
volume = 25.1327 cubic units
surface area = 48.9366 square units
但它什么也没给我。它是空白的。我怀疑底部的最后一个 return 语句编码错误,但我无法弄清楚我到底做错了什么。
import java.text.DecimalFormat;
import java.util.Scanner;
public class Ellipsoid {
private String label = " ";
private double a = 0;
private double b = 0;
private double c = 0;
public Ellipsoid(String labelIn, double aIn, double bIn, double cIn) {
setLabel(labelIn);
setA(aIn);
setB(aIn);
setC(cIn);
}
public String getLabel() {
return label;
}
public boolean setLabel(String labelIn) {
if(label != null) {
this.label = label.trim();
return true;
}
else {
return false;
}
}
public double getA() {
return a;
}
public boolean setA(double aIn) {
if(a > 0) {
this.a = a;
return true;
}
else {
return false;
}
}
public double getB(){
return b;
}
public boolean setB(double bIn) {
if (b > 0) {
this.b = b;
return true;
}
else {
return false;
}
}
public double getC() {
return c;
}
public boolean setC(double cIn) {
if(c > 0) {
this.c = c;
return true;
}
else {
return false;
}
}
public double volume() {
return (4 * Math.PI * a * b * c) / 3;
}
public double surfaceArea() {
double surfaceAreaDouble = (Math.pow((a * b), 1.6) + Math.pow((a * c), 1.6) + Math.pow((b * c), (1 / 1.6)) / 3);
surfaceAreaDouble = 4 * Math.PI * Math.pow(surfaceAreaDouble, (1 / 1.6));
return surfaceAreaDouble;
}
public String toString() {
DecimalFormat decimalFormat = new DecimalFormat("#,##0.0###");
return "Ellipsoid \"" + label + "\" with axes a = " + getA() + ", b = " + getB() + ", c = " +getC() + " units has:\n volume = " + decimalFormat.format(volume()) + " square units" + "\n surface area = " + decimalFormat.format(surfaceArea()) + " cubic units";
}
}
【问题讨论】:
-
您建议的代码
Ellipsoid ex1 = new Ellipsoid ("Ex 1", 1, 2, 3);只是创建了一个Ellipsoid类型的对象并将其分配给变量ex1。它没有更多,也没有更少。如果你想在控制台上打印一些东西,你必须告诉它这样做。如果你想打印ex1的toString()方法的返回值,你可以在下一行调用System.out.println(ex1);。 -
那么通过“输入”,你在哪里输入这个?你能给我们看一下代码吗?还是说 REPL 之类的意思?
-
请包含一个执行此操作的主要方法。
-
在 Google 上快速搜索“Java Interations”后,我发现自己位于a tutorial for using an "Interactions pane" in DrJava。如果这是您正在使用的,本教程将在第二个要点中介绍这一点。您只需输入
ex1.toString(); -
您的
setA方法从不实际使用它的参数。你从不使用aIn。
标签: java return interaction