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处重新启动。