我是Java的新手,非常感谢帮助我理解为什么会出现逻辑错误。
程序在数组“database”中搜索“item”。 代码的要点是说明使用While和If语句。
输出显示“在位置找到的项目:1” 当它应该显示“在位置:3找到的项目”
代码:
class Item {
static int [] database = {17,18,19,20,21};
public static int findItem(int item) {
int i = 0;
while ( i < database.length && database[i] != item ) {
++i;
if ( i < database.length ) {
System.out.println("Item found at position: " + i);
return i;
} else {
System.out.println("Item not found.");
return -1;
}
}
return i;
}
public static void main(String [] args) {
findItem(20);
}}
谢谢:)
答案 0 :(得分:2)
您的循环仅在database[i] != item
时运行,对于索引0
(第一次迭代)也是如此。下一个语句是++i
,它使我1
。然后检查i < database.length
是否为1
时为真。
您可能希望在循环之后放置if / else。这样,如果它在元素耗尽之前完成(即i < database.length
),你就找到了它。否则你没找到它。
答案 1 :(得分:-1)
您没有正确比较您的项目,并且您没有检查所有数组。
试试这个:
公共课Ejemplo {
static int [] database = {17,18,19,20,21};
public static int findItem(int item) {
for( int i=0; i < database.length; i++ ) {
if ( database[i] == item ) {
System.out.println("Item found at position: " + i);
return i;
}
}
System.out.println("Item not found.");
return -1;
}
public static void main(String [] args) {
findItem(20);
}
}