首页 > 解决方案 > 如何打印线性搜索后找到元素的索引?爪哇

问题描述

我正在制作一个程序,其中使用线性搜索来遍历一个由 100 个随机生成的数字组成的数组,这些数字小于 10000。

用户输入 startNumber、midNumber 和 endNumber,线性搜索将遍历数组并告诉用户在哪个索引处找到了元素

我已经实现了线性搜索,一切似乎都工作正常,但似乎在实现线性搜索后找到元素的索引时我无法打印出来。

我提供了代码、输入和输出:

代码:

import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;

public class App {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    // generating n, 0 < n < 10000 and 0 < length < 100
    Random rand = new Random();
    int[] arr = new int[100];
    for (int z = 0; z < arr.length; z++) {
      arr[z] = rand.nextInt(10000);

    }
    // sorting 
    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr));

    int startNum = scanner.nextInt();
    int midNum = scanner.nextInt();
    int endNum = scanner.nextInt();

    // linear search
    for (int i = 0; i < arr.length; i++) {
        if (startNum == arr[i]) {
            System.out.println("Found");
        }
        else {
            System.out.println("Not Found");
            
        }
        // where I want to print out the final message such as "startNum found at i"
    }
}

}

输入: 254 1467 8185

输出:

找到 未找到 未找到 未找到 未找到 未找到 未找到 否 ...(一直找不到打印?)

我只想保持简单,谢谢

标签: java

解决方案


如果你想在循环之外打印结果,那么只需定义另一个变量的值,-1因为索引从零开始,然后将已创建元素的索引存储在其中,如果没有找到,那么值将是-1这意味着未找到:

// linear search
int index = -1;
for (int i = 0; i < arr.length; i++) {
    if (startNum == arr[i]) {
        index = i;
        break;
    }
}

if (index != -1) {
    System.out.print(startNum + " Found at index: " + index);
} else {
    System.out.println("Not Found");
}

推荐阅读