如何检查数组是emty还是full

时间:2015-10-21 09:17:46

标签: java arrays

我想检查一个数组是否已满,如果是,则打印一条消息,如果它是空的则是同样的事情?

import java.util.Scanner;

public class MeetingFactory {
    Scanner stringScan = new Scanner(System.in);
    Scanner intScan = new Scanner(System.in);
    public Meeting[][][] calendar = new Meeting[12][31][24];
    private Object MeetingCreator;

    public void MeetingCreator() {
        System.out.println("Enter meeting subject");    
        String input = stringScan.nextLine();
        System.out.println("Enter month");
        int month = intScan.nextInt();
        System.out.println("Enter day of month");
        int date = intScan.nextInt();
        System.out.println("Enter time");
        int time = intScan.nextInt();
        if (!==calendar[month][date][time]()) {
            System.out.println("Another meeting is planned at this time, try other time or day");
            calendar[month][date][time] = new Meeting(input);
        }

        MeetingMenu.Menu();
    }   
}

2 个答案:

答案 0 :(得分:0)

现在,这一行:if (!==calendar[month][date][time]()) {是无效的java代码。首先,Java不支持!==,只是!=。除此之外,你不是要试图检查右侧变量。解决这个问题:

更改此行:

if (!==calendar[month][date][time]()) {

为:

if (calendar[month][date][time] != null) {

答案 1 :(得分:0)

由于您正在使用3D矩阵,为了检查矩阵是空还是满,您需要一个三个嵌套的for循环来检查每个单元格。

例如,检查矩阵是否为空:

isEmpty = true;
outerloop:
for(int m = 1; m <= 12; m++) {
    for(int d = 1; d <= 31; d++) {
        for(int t = 1; t <= 24; t++) {
            if(calendar[m][d][t] != null) {
                isEmpty = false;
                break outerloop;
            }
        }
    }
}

这假设time将从1开始并在24结束。不确定您是如何确切地实现它。使用这个逻辑,您应该能够弄清楚如何检查矩阵是否已满。