java - 我在 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() 方法。
解决方案
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;
...
推荐阅读
- mysql - REGEX_REPLACE 不匹配从开头到第一次出现的 5 位数单词的所有字符
- vb.net - 文本框中的多个随机和增加值
- python-3.x - 如何将熊猫数据框转换为张量流数据集?
- video - ffmpeg:精确剪切视频
- c# - 将c#中带有两个参数的两个值传递给sqlcommand并读取值以禁用按钮?
- c++ - 在c ++中将文本文件中的单词插入BST
- mysql - 如何将这两个查询合并为一个
- javascript - 我如何将 attr 从 choisen 选项标签更改为值?
- logging - NLog存档文件保留原始文件名
- javascript - 谷歌地图 API:使用 javascript 和 html 接受相同半径的搜索地址