第二个输出必须为true,但显示为false

时间:2017-01-18 09:05:17

标签: java

我必须确定哪些房间较大,我的代码是:

public class Apartment {

    private int room;
    private int squareMeters;
    private int pricePerSquareMeter;

    public Apartment(int rooms, int squareMeters, int pricePerSquareMeter) {
        this.room = room;
        this.squareMeters = squareMeters;
        this.pricePerSquareMeter = pricePerSquareMeter;
    }

    public boolean larger(Apartment otherApartment) {
        if (this.room > otherApartment.room) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        Apartment studioManhattan = new Apartment(1, 16, 5500);
        Apartment twoRoomsBrooklyn = new Apartment(2, 38, 4200);
        Apartment fourAndKitchenBronx = new Apartment(3, 78, 2500);

        System.out.println(studioManhattan.larger(twoRoomsBrooklyn));
        System.out.println(fourAndKitchenBronx.larger(twoRoomsBrooklyn));
    }

}

输出:

false
false

你看到的第一个输出是假的,没关系,第二个输出也是假的,但是当我们读取这些代码时,我们可以很容易地看到第二个房间必须是真的。在本练习中,我们应该得到如下输出:

false
true

你能解释一下我的错误吗?我可以通过哪些方式获得正确的输出?

2 个答案:

答案 0 :(得分:7)

你应该改变

public Apartment(int rooms, int squareMeters, int pricePerSquareMeter) {
        this.room = room; // Same as this.room = this.room, no effect at all.
        this.squareMeters = squareMeters;
        this.pricePerSquareMeter = pricePerSquareMeter;
    }

public Apartment(int rooms, int squareMeters, int pricePerSquareMeter) {
        this.room = rooms; // Typo was here.
        this.squareMeters = squareMeters;
        this.pricePerSquareMeter = pricePerSquareMeter;
    }

答案 1 :(得分:1)

this.room = rooms;

在构造函数中更改此行。考虑使用IDE,这是一个简单的错字。