因此,对于家庭作业,我必须编写一个程序,打印出一张默认情况下用-
表示的航空公司座位表(即表示他们是"打开&#34 ;并有资格预订)。随后,它应该提示用户他们想要购买的座位&将数组中特定点的值更改为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("");
}
}
}
}
这是我在执行上述代码时得到的输出:
Enter n:
9
1 2 3 4
1 - - - -
2 - - - -
3 - - - -
4 - - - -
5 - - - -
6 - - - -
7 - - - -
8 - - - -
9 - - - -
What row would you like to sit in
2
What colum would you like to sit in
2
Exception in thread "main" java.lang.NullPointerException
at AirlineSeeting.main(AirlineSeeting.java:30)
对此有任何帮助将不胜感激! 谢谢!
答案 0 :(得分:1)
SeetingChart
是一个对象数组,即String
。因此,所有条目都使用null
进行初始化。您的程序在
if (SeetingChart[row][colum].equals("X")){
因为您尝试在equals
上调用方法(即null
)。这就是为什么你应该改变声明的原因:
if ("X".equals(SeetingChart[row][colum])){
这会阻止NullPointerException
。
答案 1 :(得分:0)
欢迎使用StackOverflow!
你的问题是你永远不会初始化数组的内容,所以当你尝试在元素上调用equals()时会抛出NPE,因为如果在Java中操作'null'会发生这种情况。当您检查座位是否被占用时,请添加如下所示的空检查:
if (SeetingChart[row][colum] != null && SeetingChart[row][colum].equals("X")){
答案 2 :(得分:0)
问题是你永远不会初始化你的数组,使其中包含“ - ”,因此数组SeetingChart
的每个元素都被初始化为null。
if (SeetingChart[row][colum].equals("X")){
您正尝试在空引用上调用.equals
,这是不可能的。
我建议将SeetingChart
的所有元素初始化为“ - ”。
您可以使用Arrays.fill(SeetingChart[i], "-");
填充数组taken from here
示例:
for(int i = 0; i < test.length; i++)
{
Arrays.fill(SeetingChart[i], "-");
}