我正在做一个课堂作业,我们正在模拟购票程序。在这个我有一个方法应该拖网一个数组并找到第一个匹配项。但是,每行中的第一列作为匹配项返回,而不仅仅是找到的第一列。
//Define seatAvailable method
/**
* seatAvailable method checks to see if a seat is available at the current price
* @param x The array of seat prices
* @param y The array of seats
* @param z The price of the seat requested
* @return The number of the seat
*/
public static int seatAvailable(int [][] x, int y [][], int z)
{
boolean found = false;
int seat = 0;
while (!found)
{
for (int i = 0; i < x.length; i++)
{
for (int j = 0; j < x[0].length; j++)
{
if (z == x[i][j])
{
found = true;
x[i][j] = 0;
seat = y[i][j];
break;
}
}
}
}
return seat;
}
我不是在寻找代码,而是在寻找解释。为什么将多个项目作为匹配项返回?
编辑:回应以下:
while (!found)
{
for (int i = 0; i < x.length; i++)
{
for (int j = 0; j < x[0].length; j++)
{
if (z == x[i][j])
{
found = true;
x[i][j] = 0;
seat = y[i][j];
break;
}
}
if (found == true)
{
break;
}
}
}
return seat;
这是我尝试过的。记录显示数组中的多个项目被分配为“0”。
编辑#2:我尝试了很多变化,这是最新的。这个版本的奇怪之处在于它将数组中的 6 个项目(在外部循环/行中)更改为 0 然后停止,即使它们在 . 如果它做到了全部或一项,我会理解,但这让我感到困惑。
我认为最终它可能是执行此操作的主要方法的一部分,因为我尝试了许多变体来打破机器人行,但无论如何都会发布最后一点:
public static int seatAvailable(int [][] x, int y [][], int z)
{
int seat = 0;
for (int i = 0; i < x.length; i++)
{
for (int j = 0; j < x[0].length; j++)
{
if (z == x[i][j])
{
x[i][j] = 0;
seat = y[i][j];
return seat;
}
}
}
return seat;
}
12345678_0001
慕容森
相关分类