为了账号安全,请及时绑定邮箱和手机立即绑定

我在 Java 中的一个布尔方法没有返回 true,我不知道如何更正

我在 Java 中的一个布尔方法没有返回 true,我不知道如何更正

守着星空守着你 2021-11-24 15:13:54
这是我的代码: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() 方法。
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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;


...


查看完整回答
反对 回复 2021-11-24
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我认为你的 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);

    }

}


查看完整回答
反对 回复 2021-11-24
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

看起来您需要声明一个布尔 Staff 属性并将其添加到 SmartCard 构造函数中,以便您可以设置并获取它。否则,您的 setStaff 方法不会设置任何内容,它只是一直返回 true 作为该方法已运行的信号,而不是获取每个 SmartCard 对象中设置的 Staff 的布尔值。

换句话说,像 name 一样设置一个 Staff 布尔值,您可以在其中设置并获取它。


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信