创建三个对象后,应该从用户获取半径和高度,计算音量,然后再次询问下一个柱面。当我运行此代码时,它会提示我输入半径和高度,但它不会计算音量。我做错了什么?
import javax.swing.JOptionPane;
import java.io.*;
public class CylinderTest
{
public static void main(String[] args) throws IOException
{
String input;
String input2;
double radius[] = new double[3];
double height[] = new double[3];
Cylinder[] myCylinder = new Cylinder[3];
for (int i = 0; i < myCylinder.length; i++)
{
input = JOptionPane.showInputDialog("Enter a radius");
radius[ i ] = Double.parseDouble(input);
input2 = JOptionPane.showInputDialog("Enter a height" +
"");
height[i] = Double.parseDouble(input2);
myCylinder[i].height = input2;
myCylinder[i].radius = input;
JOptionPane.showMessageDialog(null, " The volume of the cylinder is: " + myCylinder.getVolume());
}
}
static class Cylinder
{
private double radius;
private double height;
public Cylinder(double radius, double height)
{ this.radius = radius;
this.height = height;
}
public double getVolume()
{
return radius * radius * height * Math.PI;
}
}
}
答案 0 :(得分:1)
您正在使用关键字static
作为Cylinder类中的变量和方法。我不确定你为什么使用static
关键字,但是static
意味着整个程序只有一个实例(即它是一个全局变量或函数) )。要修复它,请在Cylinder类的方法和成员变量中删除单词static。您可能还需要查看Math.PI,而不是将3.1416用作PI。
另外,我想提一下,您不需要将卷存储在变量中。相反,你可以简单地返回它。除非您出于某种原因想要将其缓存在变量中,但是当您在每次调用getVolume()
时重新计算它时,都不需要将该卷存储在变量中。
即
public double getVolume() // notice: no static keyword in the method's prototype
{
return (radius * radius) * height * Math.PI;
}
专业提示:不要在代码中使用幻数,使用变量存储幻数。作为常数(最终)变量或常规变量。
e.g。
static final int MEANING_OF_LIFE = 42; // this is somewhere tucked in a class or method
// static is used because the final keyword
// is used and therefore isn't modified
// Meaning that there is no real point to have
// multiple MEANING_OF_LIFE variables, hence static
// ...
System.out.printf("The meaning of life is: %i", MEANING_OF_LIFE);
答案 1 :(得分:0)
你忘记了
myCylinder[i].height = input2;
myCylinder[i].radius = input;
另外,
JOptionPane.showMessageDialog(null, " The volume of the cylinder is: " + myCylinder.getVolume());
答案 2 :(得分:0)
从getVolume()中删除static
。从田地的体积,高度中移除静电
要计算你必须创建一个圆柱体对象,并获得音量:
Cylinder cyl = new Cylinder(radius, height);
double volume = cyl.getVolume();