使用while / if语句返回数组位置时出现Java逻辑错误

时间:2017-09-24 00:30:47

标签: arrays if-statement search while-loop

我是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);
}}

谢谢:)

2 个答案:

答案 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);
}

}