在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
-
表示的航空公司座位表(即,显示它们“开放”且符合预订条件)。随后,它会提示用户选择他们想要购买的座位,并将数组中特定位置的值更改为aX
这就是我的代码现在的样子-它可以很好地打印出表,但是当我尝试更改位置时,它会给我一个错误:
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], "-");
}