0

创建三个对象后,它应该从用户那里获取半径和高度,计算体积,然后再次询问下一个圆柱体。当我运行此代码时,它会提示我输入半径和高度,但它不会计算体积。我究竟做错了什么?

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;


}
}

}
4

3 回答 3

1

您正在static为 Cylinder 类中的变量和方法使用关键字。我不确定你为什么使用static关键字,但暗示整个程序static只有一个实例(即它是一个全局变量或函数)。要修复它,请删除 Cylinder 类的方法和成员变量中的静态一词。您可能还想查看Math.PI而不是使用 3.1416 作为 PI。

另外,我想我会提到,您不需要将音量存储在变量中。相反,您可以简单地返回它。当然,除非您出于某种原因想将其缓存在变量中,但是看到您每次调用时都在重新计算它getVolume(),因此无需将卷存储在变量中。

IE

public double getVolume() // notice: no static keyword in the method's prototype
{
    return (radius * radius) * height * Math.PI;
}

专业提示:不要在代码中使用幻数,使用变量来存储幻数。作为常量(最终)变量或常规变量。

例如

 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);
于 2013-01-26T01:24:51.233 回答
0

你忘了

 myCylinder[i].height = input2;
 myCylinder[i].radius = input;

加,

 JOptionPane.showMessageDialog(null, " The volume of the cylinder is: " + myCylinder.getVolume());
于 2013-01-26T01:24:35.347 回答
0

static从 getVolume()中删除。从字段体积、高度中去除静电。
要计算,您必须创建一个圆柱体对象,并获取体积:

Cylinder cyl = new Cylinder(radius, height);
double volume = cyl.getVolume();
于 2013-01-26T01:24:36.813 回答