功能计算不正确?

时间:2013-01-26 01:18:02

标签: java

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

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;


}
}

}

3 个答案:

答案 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();