为什么此方法在首次出现后仍不继续查找索引?

时间:2019-07-17 08:00:21

标签: java

为什么“ getIndex”在第一次出现后就不继续查找索引?

write方法实现一个索引,该索引查找数组中指定元素的首次出现。

public static void main(String[] args) {
        //定义数组
        int[] arr = {5,7,2,3,5};
        //键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的数字:");
        int num = sc.nextInt();

        int index = getIndex(arr,num);
        System.out.println(index);
    }

    public static int getIndex(int[] arr,int value) {
        for(int i=0; i<arr.length; i++) {
            if(arr[i] == value) {
                return i;
            }
        }
        return -1;
    }

我希望输出为0和4,但实际输出为0。

3 个答案:

答案 0 :(得分:1)

在您[-1]一个值之后,您的getIndex()函数将停止。从函数返回时,它将不再继续运行该函数!

答案 1 :(得分:1)

方法的返回类型为int,这意味着它将一次返回一个值。请尝试以下操作:

    public static void main(String[] args) {
        //定义数组
        int[] arr = {5,7,2,3,5};
        //键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的数字:");
        int num = sc.nextInt();
        getIndex(arr,num);
    }

    public static void getIndex(int[] arr,int value) {
        boolean isFound = false;
        for(int i=0; i<arr.length; i++) {
            if(arr[i] == value) {
                System.out.println(i);
                isFound = true;
            }
        }
        if( !isFound)
           System.out.println("Not found");
    }

答案 2 :(得分:0)

您的方法签名返回值是 ONLY ONE int ,它表示给定值的第一个索引出现。

public static **int** getIndex(int[] arr,int value)

因此,如果数组多次包含给定值,则仅返回第一个索引。