我收到关于最后一种方法的错误消息。这不是返回布尔值吗?如果没有,我该如何解决?我正在尝试在main方法中使用此方法。谢谢。
public class Kids {
String name;
boolean absent;
public static void main(String[] args) {
// TODO Auto-generated method stub
String [] kids = {"Alice", "Bob", "Cyndi", "Danielle", "Ed"};
Kids[] list = createList(kids);
for (int i=0; i<list.length; i++)
System.out.println (createList (kids));
if (markAbsent(list, "Bob") == true)
System.out.println ("He or she is absent.");
}
static Kids[] createList (String[] nameList) {
int length = nameList.length;
Kids[] list = new Kids[length];
for (int i=0; i<length; ++i) {
list[i] = new Kids();
list[i].name = nameList[i];
list[i].absent = false;
}
return list;
}
static boolean markAbsent (Kids[] list, String name) {
for (int i=0; i<list.length; ++i) {
if (list[i].name.equals(name))
list[i].absent = true;
else list[i].absent = false;
return (list[i].absent);
}
}
}
答案 0 :(得分:1)
static boolean markAbsent (Kids[] list, String name) {
for (int i=0; i<list.length; ++i) {
if (list[i].name.equals(name))
list[i].absent = true;
else list[i].absent = false;
return (list[i].absent);
}
}
错误非常明显。您不会在循环外部返回布尔值。当然,您要返回清单[i]。缺少for循环的内部。但是,如果for循环从未真正循环怎么办?如果list.Length == 0怎么办?您的代码永远不会返回任何内容,因为从未真正执行过for循环。
在方法末尾,添加return false;
或其他内容,具体取决于如果for
循环实际上从不执行任何操作时要执行的操作。
答案 1 :(得分:0)
您总是返回list[0].absent
(除非列表为空,否则会出现异常)
因此对于Bob来说,您总是会得到一个错误,因为爱丽丝在列表中(第0个元素)排在第一位
答案 2 :(得分:0)
正如其他人已经指出的那样,您没有返回布尔值。
另一个错误是因为您要打印整个列表,而不能执行此操作,如果您想打印列表中的每个元素,则必须使用for循环来打印每个元素,当前正在从中获取默认输出.toString
方法。
尝试使用此命令打印每个名称:
for (String name : kids) {
System.out.print(name+" ");
}