0

这里有点迷失,似乎没有任何工作。我已经阅读了有关返回方法的章节,但我无法让它工作。

基本上我必须创建一个接受 Park 参数的方法,我有一个名为 park 的类,它有用于布尔、野餐、游乐场、网球和游泳池的 setter 和 getter,如果 Park 有它们,它们基本上会被声明为 true 或 false。如果公园有野餐和游乐场设施,它还需要返回一个布尔值。

这是我到目前为止所拥有的:

公园班:

public class Park {

    private String parkName;
    private int parkAcres;

    private boolean picnicFacilities;
    private boolean tennisCourt;
    private boolean playground;
    private boolean swimmingPool;


    public String getParkName() {
        return parkName;
    }

    public void setParkName(String parkName) {
        this.parkName = parkName;
    }

    public int getParkAcres() {
        return parkAcres;
    }

    public void setParkAcres(int parkAcres) {

        if (parkAcres < 0 || parkAcres > 400) {
            System.out
                    .println("You have entered an invalid acre amount, it has been defaulted to 0");
            parkAcres = 0;
        }

        this.parkAcres = parkAcres;
    }

    public boolean isPicnicFacilities() {
        return picnicFacilities;
    }

    public void setPicnicFacilities(boolean picnicFacilities) {
        this.picnicFacilities = picnicFacilities;
    }

    public boolean isTennisCourt() {
        return tennisCourt;
    }

    public void setTennisCourt(boolean tennisCourt) {
        this.tennisCourt = tennisCourt;
    }

    public boolean isPlayground() {
        return playground;
    }

    public void setPlayground(boolean playground) {
        this.playground = playground;
    }

    public boolean isSwimmingPool() {
        return swimmingPool;
    }

    public void setSwimmingPool(boolean swimmingPool) {
        this.swimmingPool = swimmingPool;
    }

}

练习告诉我为所有这些创建 getter 和 setter,我什至还没有通过使用其中一个。

这是 ParkTest 类,它具有使用这些 getter 和 setter 的方法:

import java.util.Scanner;

public class TestParks {

    static Park park1 = new Park();

    static String parkName;
    static int parkAcres;
    static boolean facilityCheck;

    public static void main(String[] args) {

        parkInfo(park1);
        request();
        System.out.println("Test: " + facilityCheck);

    }

    public static void parkInfo(Park park) {
        Scanner userInput = new Scanner(System.in);

        System.out.println("Enter the park name");
        parkName = userInput.next();

        System.out.println("Enter the size in acres");
        parkAcres = userInput.nextInt();

        park.setParkName(parkName);
        park.setParkAcres(parkAcres);


    }

    public static boolean request() {
        Scanner userInput = new Scanner(System.in);


        System.out.println("Do you want picnic facilities?");
        if(userInput.nextInt() == 1){
            park1.setPicnicFacilities(true);
            return true;
        }else{
            return false;
        }



    }

}

我不太明白练习要我做什么,它要求我检查两个设施是否可用并返回值。我尝试过的一切,每次的价值都只是假的。这本书在一章中教过我这一点,但实际上,它只显示了 int/double 变量而不是布尔值的使用,不知道这是否有区别,无论哪种方式,我都完全不知道如何做返回方法......

通常我只会提示用户在公园里想要什么,然后使用 setter 将布尔值声明为 true,然后在 displayParkInfo() 方法中使用简单的 if 语句,使用 getter 将结果输出到控制台,看起来任务不希望我这样做。

4

2 回答 2

2

尝试

facilityCheck = request();
于 2013-08-30T17:36:42.323 回答
0

null对于引用类型、0数值类型和false布尔类型,类字段默认初始化为。你的领域

static boolean facilityCheck; // = false

将被初始化为false. 而且由于您没有在任何地方重新初始化它,所以它保持这种状态。您需要将其设置为的返回值request()

facilityCheck = request();

或者让该方法本身设置其值。

if(userInput.nextInt() == 1){
    ark1.setPicnicFacilities(true);
    facilityCheck = true;
} else{
    facilityCheck = false;
}
// return or not (change your method definition if not)

在我对你的问题的评论中

public void setParkAcres(int parkAcres) {
    if (parkAcres < 0 || parkAcres > 400) {
        System.out
                .println("You have entered an invalid acre amount, it has been defaulted to 0");
        parkAcres = 0;
    }
    this.parkAcres = parkAcres;
}

不是很有用,因为无论if条件评估为true,这条线

this.parkAcres = parkAcres;

将被执行。您需要returnif.

public void setParkAcres(int parkAcres) {
    if (parkAcres < 0 || parkAcres > 400) {
        System.out
                .println("You have entered an invalid acre amount, it has been defaulted to 0");
        parkAcres = 0;
        return;
    }
    this.parkAcres = parkAcres;
}

return;语句将停止执行它所在的方法并将执行返回给方法的调用者。这与您的其他问题无关。

于 2013-08-30T17:37:31.387 回答