我正在完成一项学校任务,我遇到了二维阵列的问题。基本上我的程序从用户获取一个整数,并确定其中一个数组值是否低于该整数。我有一段时间和for循环设置来做这个技巧,但我似乎无法让我的循环使用最后一行数据。我已经尝试过将这些东西混合几个小时了。
我确信我对所缺少的东西都非常不满,但我现在可以用一只手了。 这是我的代码的相关数据
//array of store inventory
int invArray[][] = {{102, 54, 20, 78},
{45, 25, 35, 75},
{12, 35, 45, 65},
{54, 25, 34, 45},
{15, 35, 50, 25}};
int menuChoice = 0; //allows user to select a menu option
int storeNum=0; //store number
String itemName="null"; //name for an item
int itemAmount=0; //items below this amount are pulled up in choice 4
int arrayRow=0; //row value for invArray based on itemName
int arrayCol=0; //column value for invArray based on storeNum
//menu 4
if (menuChoice == 4){
System.out.print("Find all items below the number: ");
//catches mistakes
try{
itemAmount = input.nextInt();
}
catch(Exception e){
System.out.print("Invalid value entered. Try again: ");
itemAmount = input.nextInt();
}
System.out.println("Items below "+itemAmount+": ");
//loop that checks item values at all stores
arrayRow=0;
arrayCol=0; //counters for loop
while (arrayCol < invArray[arrayRow].length){
for (arrayRow = 0; arrayRow < invArray[arrayCol].length; arrayRow++){
if (invArray[arrayRow][arrayCol] < itemAmount){
if (arrayRow == 0)
itemName = "Tennis Shoes";
if (arrayRow == 1)
itemName = "Sweaters";
if (arrayRow == 2)
itemName = "Jeans";
if (arrayRow == 3)
itemName = "Shorts";
if (arrayRow == 4)
itemName = "Jackets";
//outputs stores with values lower than the one given
System.out.println("Store 10"+(arrayCol+1)+" "+itemName+": "
+invArray[arrayRow][arrayCol]);
for (int i = 0;invArray[4][i] < invArray[arrayRow].length; i++)
System.out.println("Store 10"+(i+1)+" "+" jackets : "+invArray[i][4]);
}
}
arrayCol++;
System.out.println();
}//end item check loop
}
答案 0 :(得分:3)
你错了第二个循环。它应该是
for (arrayRow = 0; arrayRow < invArray.length; arrayRow++){
因为arrayRow
是第一个索引。在你的代码中你会得到4而不是5会导致错误。
另外,您最好将for
用于两个循环。
而且你最好在行循环中使用列循环,因为前者是依赖的,或者你应该交换索引;
答案 1 :(得分:1)
试试这个:
while (arrayRow < invArray.length) {
for (arrayCol = 0; arrayCol < invArray[arrayRow].length; arrayCol++) {
//...
}
arrayRow++;
}
您的数组的尺寸为[4][5]
;你正在切换这两个并尝试访问一个元素,就好像数组有维度[5][4]
一样。您还只访问了16个元素,因为invArray[a].length
对于所有可用的a
始终为4个。
答案 2 :(得分:0)
你确定你需要第二行
itemName = "Jackets";
arrayCol++;
bur你的代码让我感到困惑,所以我不确定这是否解决了。