首页 > 解决方案 > 我在 Java 中的一个布尔方法没有返回 true,我不知道如何纠正

问题描述

这是我的代码:

public class SmartCard {

    private String name;

    //Constructor for SmartCard class
    public SmartCard(String name) {
        this.name = name;
    }
    //the getOwner() method which returns the owner's name
    public String getOwner() {
        return name;
    }

    //setStaff() method to set staff status
    public boolean setStaff(boolean status) {
            return true;
    }

    //isStaff() method returns true if card belongs to member of staff
    public boolean isStaff() {
        boolean staff;
        if (setStaff(true)) {
            staff = true;
        } else staff = false;
        return staff;
    }
}

public class Tester {

    public static void main(String... args) {
        testPart1a();
        testPart1b();
        testPart1c();`enter code here`
    }

    public static void testPart1a() {
        System.out.println("Part 1 - Accessor methods");
        System.out.println("======");

        System.out.println("--- Part 1a ---");
        System.out.println();

        System.out.println("* Creating a new SmartCard for student Anna Undergrad...");
        SmartCard card = new SmartCard("Anna Undergrad");
        System.out.println("Owner is: " + card.getOwner());
        System.out.println();
    }


    public static void testPart1b() {
        System.out.println("--- Part 1b ---");
        System.out.println();

        SmartCard card = new SmartCard("Anna Undergrad");

        System.out.println("Is " + card.getOwner() + " staff? " + card.isStaff());
        System.out.println();
    }



    public static void testPart1c() {
        System.out.println("--- Part 1c ---");
        System.out.println();

        System.out.println("* Creating a new SmartCard for staff member Dr. Bob Lecturer...");
        SmartCard card = new SmartCard("Dr. Bob Lecturer");
        card.setStaff(true);
        System.out.println("Is " + card.getOwner() + " staff? " + card.isStaff());
        System.out.println();
    }

当我运行程序时,我的 isStaff() 方法总是返回 true,而 Anna Undergrad 应该返回 false,Bob Lecturer 应该返回 true。也许我做错了,应该改变我的 setStaff() 方法。

标签: java

解决方案


setters不必返回boolean(除非您想做一些非常非正统的事情)。将其更改为:

//setStaff() method to set staff status
public void setStaff(boolean status) {
    this.status = status;
}

并像这样更改您的getStaff()方法:

public boolean isStaff() {
    return staff;
}

您还需要定义boolean staff

private String name;
private boolean staff;

...

推荐阅读