从主方法打印方法

时间:2018-08-29 10:54:54

标签: java printing

我对java并不陌生,我想知道如何从我的Boxvolume方法中打印volume变量。

我确实知道我需要将Boxvolume设置为全局变量。因此,如果有人可以帮助我,将不胜感激。

这是我的代码:

public static void main(String[] args) {
    Box a = new Box(20, 30, 40);

    ArrayList<Box> boxes = new ArrayList<>();
    boxes.add(a);

    for (Box bx : boxes) {
        bx.print();
    }

    double V = volume(Boxvolume);
    System.out.println(V);
}

class Box {
    int width;
    int height;
    int depth;

    public Box(int w, int h, int d) {
        this.width = w;
        this.height = h;
        this.depth = d;
    }

    public double volume(double BoxV) {
        int Boxvolume = width * height * depth;
        return Boxvolume;
    }

    public double price(double BV) {
        double Boxprice = volume(BV) * 5;
        return Boxprice;
    }

    public void print() {
        System.out.println(this.width);
        System.out.println(this.height);
        System.out.println(this.depth);
        System.out.println();
    }
}

3 个答案:

答案 0 :(得分:0)

您的代码根本是错误的。首先,您从实例变量a.volume();调用您的volume方法。同样,您在数量和价格方法中不需要双重参数。价格方法已经调用了交易量,您没有在交易量中使用BV参数。

因此正确的版本应类似于:

public static void main(String[] args) {

    Box a = new Box(20, 30, 40);

    ArrayList<Box> boxes = new ArrayList<>();

    boxes.add(a);

    for (Box bx : boxes) {
        bx.print();
        System.out.println(bx.volume());
    }    
}

class Box {

    int width;
    int height;
    int depth;


    public Box(int w, int h, int d) {
        this.width = w;
        this.height = h;
        this.depth = d;

    }

    public double volume() {

        int Boxvolume = width * height * depth;
        return Boxvolume;

    }

    public double price() {

        double Boxprice = volume() * 5;

        return Boxprice;
    }



    public void print() {

        System.out.println(this.width);
        System.out.println(this.height);
        System.out.println(this.depth);

        System.out.println();
    }

}

答案 1 :(得分:0)

建议您遵循Java命名约定并删除不必要的参数。

此示例为您的Box提供了一种toString()打印方法,删除了可有可无的参数,根据Java命名约定提供了变量名称,并使用了类方法getVolume()和{{1} }在其他类方法中。如果您将getPrice()heightwidth作为类属性,则不需要其他数量或价格属性,只需使用depth,{{1 }}和height或类方法:

width

然后,您可以在具有depth方法的类中检查输出:

class Box {

    int width;
    int height;
    int depth;

    public Box(int w, int h, int d) {
        this.width = w;
        this.height = h;
        this.depth = d;
    }

    /*
     * - renamed the method
     * - removed the dispensable parameter
     */
    public double getVolume() {
        int Boxvolume = width * height * depth;
        return Boxvolume;
    }

    /*
     * - renamed the method
     * - removed the dispensable parameter
     */
    public double getPrice() {
        // use the getVolume() method
        double Boxprice = this.getVolume() * 5;
        return Boxprice;
    }

    public void print() {
        // just print the toString() method
        System.out.println(this.toString());
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();

        sb.append("Height: ");
        // here you take the class attributes
        sb.append(height);
        sb.append("\n");
        sb.append("Depth: ");
        sb.append(depth);
        sb.append("\n");
        sb.append("Width: ");
        sb.append(width);
        sb.append("\n");
        sb.append("Price: ");
        // here you just take your method
        sb.append(getPrice());
        sb.append("\n");
        sb.append("Volume: ");
        // so you do here
        sb.append(getVolume());
        sb.append("\n");

        return sb.toString();
    }
}

答案 2 :(得分:0)

您的代码几乎是正确的-无论如何对于初学者:)

您在寻求解决方案的方式上似乎存在一些概念上的误解。如果我过于简单,或者假设您了解的知识少于您,我深表歉意。但是,过度解释比不充分解释似乎更好。

首先使用main()方法。由于它是static,因此只有一种-您可以像大老板一样来考虑它,控制小型应用程序中的情况。

那个main()方法(老板)创建了一个Box,这是“事物”的单个实例。老板知道这一点,并将其框称为a。他将该框添加到集合中,该集合目前仅包含框a,但将来可能会有很多框。我敢肯定,到目前为止,您只需要提到它即可。

Box类可以做一些事情。它知道自己的widthheightdepth,并且知道如何根据这些属性来计算volumeprice。它还可以print在系统控制台上显示其自身的表示形式。

在您的main方法中,创建名为a的框后,您要询问该框的体积是多少。为此,您必须在感兴趣的框实例上调用volume方法

因此,您不仅要索取任何体积,还索要a框的体积。您可以使用以下语法进行此操作:

a.volume();

您不需要将任何内容传递到volume方法中(因此,您应该从double BoxV方法中删除volume,因为volume方法是其中的一部分Box本身,因此它已经知道Box知道的一切-widthheightdepth,这是它所需要的全部计算音量。

因此,您需要进行一些更改:

volume方法不需要使用任何参数,而应该是:

public double volume() {
  return width * height * depth;
}

(请注意,您也无需将其分配给int Boxvolume并可以删除该变量-如果愿意,可以完全由您决定保留它)

使用main方法完成此操作后,您可以使用以下方法获取并打印框a的体积:

double volume = a.volume();
System.out.println(volume);

如果要打印列表中所有框的数量(目前仅是一个),则将等效代码放入for循环中,例如:

for (Box bx : boxes) {
  bx.print();
  double volume = bx.volume();
  System.out.println(volume);
}

请注意,这里我们调用的是bx.volume(),而不是a.volume(),因为在这种情况下,我们对循环中当前正在考虑的盒子的数量感兴趣,而不仅仅是盒子{ {1}}。