如何在主方法中使用方法?该方法应该返回一个布尔值,但是我不知道该怎么做

时间:2018-11-20 18:24:25

标签: java boolean

我收到关于最后一种方法的错误消息。这不是返回布尔值吗?如果没有,我该如何解决?我正在尝试在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);
            }

     }
}

3 个答案:

答案 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+" ");
}