Java数组未正确填充
我有以下代码,我似乎无法调试。我正在将对象Java数组未正确填充,java,arrays,Java,Arrays,我有以下代码,我似乎无法调试。我正在将对象乘客添加到行对象中的座椅对象中。如果座椅被占用,它将从第一排开始,检查所有座椅,并向其添加乘客。但是,如果我移除了一个以前拥有的座椅,然后添加一个新的乘客。新的乘客应该占用以前拥有的座位。情况并非如此,新的乘客将占据下一个座椅。我的假设是我的firstClassRow.get(i)从最近的索引开始,而不是从0开始 这里只是一个基本的例子 1A filled 1B unfilled(should fill here) 2A filled 2B filled
乘客
添加到行
对象中的座椅
对象中。如果座椅
被占用,它将从第一排开始
,检查所有座椅
,并向其添加乘客
。但是,如果我移除了一个以前拥有的座椅
,然后添加一个新的乘客
。新的乘客
应该占用以前拥有的座位
。情况并非如此,新的乘客
将占据下一个座椅
。我的假设是我的firstClassRow.get(i)
从最近的索引开始,而不是从0开始
这里只是一个基本的例子
1A filled 1B unfilled(should fill here)
2A filled 2B filled
3A filled 3B unfilled(but fills here)
public void addUser(Passenger p)
{
Rows tempR;
boolean result = true;
int i = 0;
while(result == true)
{
tempR = firstClassRow.get(i);
if(tempR.check(p) == true)
{
tempR.addPassenger(p);
result = false;
}
else
{
i = i + 1;
if (i < number)
{
result = true;
}
else
{
result = false;
}
}
}
}
1A填充1B未填充(应在此处填充)
2A填充2B填充
3A填充3B未填充(但此处填充)
公共无效添加用户(乘客p)
{
行速度;
布尔结果=真;
int i=0;
while(结果==true)
{
tempR=firstClassRow.get(i);
如果(临时检查(p)=真)
{
临时乘客(p);
结果=假;
}
其他的
{
i=i+1;
如果(i
检查此示例可能会有所帮助
public static void main(String args[]) {
String ll[][] = new String[2][2];
System.out.println(ll.length);
System.out.println(ll[1].length);
for (int i = 0; i < ll.length; i++)
for (int j = 0; j < ll[1].length; j++)
ll[i][j] = "true";
System.out.println();
System.out.println("All seats are occupied");
display(ll);
ll[0][1] = "false";
ll[1][1] = "false";
System.out.println();
System.out.println("Two seats emptied");
display(ll);
// adding new one
System.out.println();
System.out.println("Adding new passenger");
addPassenger(ll);
display(ll);
System.out.println();
System.out.println("Adding new passenger");
addPassenger(ll);
display(ll);
}
static void display(String a[][]) {
for (int i = 0; i < a.length; i++)
for (int j = 0; j < a[1].length; j++)
System.out.println(i + "" + j + " :: " + a[i][j]);
}
static void addPassenger(String a[][]) {
boolean result = false;
for (int i = 0; i < a.length; i++)
for (int j = 0; j < a[1].length; j++) {
if (a[i][j] == "false") {
a[i][j] = "true";
result = true;
}
if (result)
break;
}
}
Output:
All seats are occupied
00 :: true
01 :: true
10 :: true
11 :: true
Two seats emptied
00 :: true
01 :: false
10 :: true
11 :: false
Adding new passenger
00 :: true
01 :: true
10 :: true
11 :: false
Adding new passenger
00 :: true
01 :: true
10 :: true
11 :: true
publicstaticvoidmain(字符串参数[]){
字符串ll[][]=新字符串[2][2];
系统输出打印长度(ll.长度);
System.out.println(ll[1].长度);
for(int i=0;i
那么为什么tempR.check(p)
第一排返回false?tempR.check(p)
通过比较乘客
对象的名称属性
,检查该行中的座椅是否有可用的座椅。因此,如果检查(p)
为真,则有一个座位可用。添加,然后通过返回false来中断while
循环,并转到新的密码您是否尝试在调试器中单步执行代码?是的,int i
保持在任何更新的值,而不是在0处重新启动。