如何确保填充的空间不再在2D数组中被占用?

时间:2016-01-17 22:50:49

标签: java arrays 2d

这是我第一次访问本网站。我对java和编码非常陌生,因此我很可能需要深入解释。我正在编写一个程序,需要12名学生,并将他们放在5行,6列阵列教室的座位上。我必须防止出界异常,并防止学生坐在已经填补的位置。 我需要帮助以确保学生不会占用已经填补的席位。我不知道该怎么做。到目前为止,这是我的代码:

public class Classroom
{
public static void printArray(char[][] array)
{

    for(int row=0;row<5;++row)
    {
        System.out.print("| "); 
        for(int col =0;col<6;++col)
            System.out.print(array[row][col] + "| "); 
        System.out.println();
    }
    for(int col =0;col<6;++col)
        System.out.print("---");
    System.out.println(); 
}

public static void main()
{
    Scanner reader = new Scanner(System.in); 
    char[][] array = new char[5][6];
    for(int i =0;i<5;++i)
        for(int j=0;j<6;++j)
            array[i][j] = ' '; 

    printArray(array); 
    for(int x =1;x<14;++x)
    {


        System.out.print("Choose column (1-6) for a student: "); 
        int column = reader.nextInt(); 
        System.out.print("Choose row (1-5) for a student: "); 
        int row = reader.nextInt(); 


        if(column <1 || column>6 || row<1 || row>5)
        {
            System.out.println(); 
            System.out.println("Column should be from 1 to 6. Row should be from 1 to 5.");

            System.out.println("The program will restart from student 1."); 
            System.out.println(); 

            x=1;
            for(int i =0;i<5;++i)
                for(int j=0;j<6;++j)
                    array[i][j] = ' '; 

            continue;
        }


        for(int i =0;i<5;++i)
            for(int j=0;j<6;++j)

                array[row-1][column-1] = 'S';
        printArray(array);


    }
}

}

1 个答案:

答案 0 :(得分:0)

        if (array[row-1][column-1] == 'S') {
            System.out.println("This seat is taken! Please choose another.");
            continue;
        }

当他们尝试进入已经拍摄的座位时,将打印到控制台。您只需要检查当前行/列是否包含某个人,或者在您的情况下,是否包含值'S'

您应该在从扫描仪读取行后立即添加此项,以防止它执行其余代码。