我在 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();

    }


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


守着星空守着你
浏览 195回答 3
3回答

慕码人2483693

setters不必返回boolean(除非您想做一些非常非正统的事情)。将其更改为://setStaff() method to set staff statuspublic void setStaff(boolean status) {    this.status = status;}并getStaff()像这样改变你的方法:public boolean isStaff() {    return staff;}您还需要定义boolean staff:private String name;private boolean staff;...

慕桂英546537

我认为你的 setStuff 方法是错误的:public boolean setStaff(boolean status) {        return true;} 还有一个简单的说明:您可以对 SmartCard 使用 getter 和 setter 模式:public class SmartCard {    private String name ;    private boolean stuff ;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public boolean isStuff() {        return stuff;    }    public void setStuff(boolean stuff) {        this.stuff = stuff;    }    @Override    public String toString() {        return "SmartCard{" +                "name='" + name + '\'' +                ", stuff=" + stuff +                '}';    }}现在测试类:class MainClass {    public static void main(String[] args) {        SmartCard card = new SmartCard() ;        card.setName("Sample");        card.setStuff(false);        System.out.println(card);        SmartCard card2 = new SmartCard();        card2.setName("Other Card");        card2.setStuff(true);        System.out.println(card2);    }}

幕布斯7119047

看起来您需要声明一个布尔 Staff 属性并将其添加到 SmartCard 构造函数中,以便您可以设置并获取它。否则,您的 setStaff 方法不会设置任何内容,它只是一直返回 true 作为该方法已运行的信号,而不是获取每个 SmartCard 对象中设置的 Staff 的布尔值。换句话说,像 name 一样设置一个 Staff 布尔值,您可以在其中设置并获取它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java