【问题标题】:How to get the return of a class method printed in main in Java? [closed]java - 如何在Java中获取以main打印的类方法的返回? [关闭]
【发布时间】:2020-10-17 23:07:15
【问题描述】:

我现在只是在学习 Java 中的类和构造函数,但我不明白为什么我不能从其他方法中打印出组合值。这是我在 main.java 中的代码:

public static void main(String[] args) {

    Wall height = new Wall ();
    Wall width = new Wall ();
    Wall area = new Wall();


    height.setHeight(5);
    System.out.println("height = " + height.getHeight());
    width.setWidth(4);
    System.out.println("width = " +width.getWidth());
    System.out.println("area = " +width.getWidth()*height.getHeight());
    System.out.println(area.getArea());
    System.out.println("AREA      =     " + area );

}

这是我在 Wall Class 中的代码:

public class Wall {

private double height;
private double width;

public Wall () {
    this.height = height;
    this width = width;
}

    public Wall (double height, double width){
        if (height <= 0 || width <= 0) {
            this.height = 0;
            this.width = 0;
        }

    }

        public double getHeight () {
            return this.height;
        }
        public double getWidth () {
            return this.width;
        }
        public void setHeight (double height){
        this.height = height;
    }
    public void setWidth (double width){
        this.width = width;
    }

    public double getArea () {
        this.height = height;
        this width = width;
    double area = getHeight()*getWidth();

        return area;
    }

最后一个方法 getArea 有问题,因为它打印出 0.0,就好像没有设置高度和宽度一样。我错过了什么?

【问题讨论】:

  • 您的getArea() 方法有些奇怪:该方法的第一两行是什么?他们没有做任何有用的事情,只会混淆。摆脱它们。
  • 另外,您正在为 2 个完全不同的 Wall 对象设置高度和宽度,这不会影响第三个 Wall 对象 area 的状态。您需要创建一个 Wall 对象,而不是三个,设置此对象的高度和宽度,区域将起作用。
  • 是的,我只是添加了它们以确保 IntelliJ 理解的值相同,因为我尝试了其他任何方法但没有改变。删除它们,同样的问题。
  • 其他第三个对象区域,我添加它只是为了解决我的问题,但我仍然不知道如何解决。

标签: java class constructor return


【解决方案1】:

问题

您在不同的对象中设置了 widthheight 并试图找到 来自不同对象的区域。

解决方案

您需要将这些值设置为同一个对象,如下所示:

Wall wall = new Wall ();

wall.setHeight(5);
System.out.println("height = " + wall.getHeight());
wall.setWidth(4);
System.out.println("width = " + wall.getWidth());
System.out.println("area = " + wall.getWidth() * wall.getHeight());
System.out.println(wall.getArea());

【讨论】:

    【解决方案2】:

    您有三个不同的 Wall 对象 - area 不会受到 heightwidth 上的设置值的影响。好像你打算有一堵墙:

    Wall wall = new Wall();
    
    wall.setHeight(5);
    System.out.println("height = " + wall.getHeight());
    wall.setWidth(4);
    System.out.println("width = " +wall.getWidth());
    System.out.println("area = " + wall.getWidth() * wall.getHeight());
    System.out.println(wall.getArea());
    

    【讨论】:

    • 是的,现在它可以工作了,我不敢相信它是如此简单!!!
    猜你喜欢
    • 2016-02-18
    • 2016-02-01
    • 1970-01-01
    • 2020-11-01
    • 2015-01-13
    • 2022-10-15
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多