Java交互未返回



我正在用Java编写代码,为变量a、b、c和计算椭球体尺寸的标签输入数字。输入Ellipsoid ex1 = new Ellipsoid (" ex1 ", 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

但是它什么也没给我。它是空白的。我怀疑底部的最后一个返回语句编码错误,但我不知道我到底做错了什么。

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";
}

}

看了你的代码后,我注意到以下问题:

  1. 在你的setter方法中你没有使用正确的变量。你应该在所有的setter中使用方法参数。

例子:

public boolean setA(double aIn) {
if(a > 0) {            // a should be aIn here
this.a = a;              // = a should be = aIn
return true;
}
else {
return false;  
}
}
  1. surfaceArea()方法有一个小错误:

    (Math.pow((a * b), 1.6) + Math.pow((a * c), 1.6) + Math.pow((b * c), (1 / 1.6)) / 3);

最后一个不需要"1/1.6"部分,但只是"1.6"就像剩下的一样,然后你需要另一个括号来表示所有3个数学。然后除以3。(也叫开关"隔间"one_answers";square"文字匹配音量和表面正确)

在这些修复之后,创建一个类为Ellipsoid的对象并将其打印出来,得到您想要的输出:

public static void main(String[] args) {
Ellipsoid ex1 = new Ellipsoid ("Ex 1", 1, 2, 3);
System.out.println(ex1);
}

输出:

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

最新更新