在Java中操作2d数组

在Java中操作2d数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,因此,对于家庭作业,我必须编写一个程序,打印出默认情况下用-表示的航空公司座位表(即,显示它们“开放”且符合预订条件)。随后,它会提示用户选择他们想要购买的座位,并将数组中特定位置的值更改为aX 这就是我的代码现在的样子-它可以很好地打印出表,但是当我尝试更改位置时,它会给我一个错误: import java.util.*; public class AirlineSeeting { public static void main(String[]args) { in

因此,对于家庭作业,我必须编写一个程序,打印出默认情况下用
-
表示的航空公司座位表(即,显示它们“开放”且符合预订条件)。随后,它会提示用户选择他们想要购买的座位,并将数组中特定位置的值更改为a
X

这就是我的代码现在的样子-它可以很好地打印出表,但是当我尝试更改位置时,它会给我一个错误:

import java.util.*;

public class AirlineSeeting {

    public static void main(String[]args) {
        int row = 0;
        int colum = 0;
        System.out.println("Enter n:");
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        String[][] SeetingChart = new String[n][4];

        for (int i = 1; i <= 4; i++) {
            System.out.printf("\t%d\t", i);
        }

        System.out.println("");

        for (int j = 1; j <= n; j++) {
            System.out.printf("%d", j);
            for (int k = 1; k <= 4; k++) {
                System.out.print("\t-\t");
            }
            System.out.println("");
        } 
        for( int i = 0 ; i < SeetingChart.length; i++){
            System.out.println("What row would you like to sit in");
            row = scanner.nextInt();
            System.out.println("What colum would you like to sit in");
            colum = scanner.nextInt();
            if (SeetingChart[row][colum].equals("X")){
                System.out.println("Please pick a seat that is avalable");
            }
            else if (SeetingChart[row][colum].equals("-")){
                SeetingChart[row][colum] = "X";
            }
            for (int j = 1; j <= 4; j++) {
                System.out.printf("\t%d", j);
            }

            System.out.println("");

            for (int j = 1; j <= n; j++) {
                System.out.printf("%d", j);
                for (int k = 1; k <= 4; k++) {
                    System.out.print("\t-");
                }
                System.out.println("");
            } 
        }
    } 
}
在此方面的任何帮助都将不胜感激!
谢谢大家!

SeetingChart
是一个对象数组,即
字符串
。因此,所有条目都用
null
初始化。你的程序在

            if (SeetingChart[row][colum].equals("X")){
因为您试图在
null
上调用一个方法(即
equals
)。这就是为什么您应该切换语句的原因:

            if ("X".equals(SeetingChart[row][colum])){

这可以防止出现
NullPointerException

欢迎使用StackOverflow

您的问题是,您从未初始化数组的内容,因此当您尝试调用元素上的equals()时,会抛出一个NPE,因为如果在Java中操纵“null”,就会发生这种情况。当您检查座位是否有人时,添加一个空检查,如下所示:

if (SeetingChart[row][colum] != null && SeetingChart[row][colum].equals("X")){

问题是您从未将数组初始化为包含“-”,因此数组的每个元素
SeetingChart
都初始化为null

if (SeetingChart[row][colum].equals("X")){
您正在尝试对空引用调用
.equals
,这是不可能的

我建议将
SeetingChart
的所有元素初始化为“-”

您可以使用数组.fill(参见图表[i],“-”以填充数组

例如:

for(int i = 0; i < test.length; i++)
{
    Arrays.fill(SeetingChart[i], "-");
}
for(int i=0;i
它给了你什么错误?”[…]它给了我一个错误。”->哪个错误?我编辑了question@TravisWittmann当您的问题得到回答时,请将其标记为已回答。
for(int i = 0; i < test.length; i++)
{
    Arrays.fill(SeetingChart[i], "-");
}