java - 如何打印线性搜索后找到元素的索引?爪哇
问题描述
我正在制作一个程序,其中使用线性搜索来遍历一个由 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
输出:
找到 未找到 未找到 未找到 未找到 未找到 未找到 否 ...(一直找不到打印?)
我只想保持简单,谢谢
解决方案
如果你想在循环之外打印结果,那么只需定义另一个变量的值,-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");
}
推荐阅读
- c++ - gcc 和 cl 与嵌套和全局命名空间中同名的朋友类的区别
- nginx - 我无法使用 ffmpeg 创建 RTMP 流
- wordpress - 需要在 WooCommerce 中更改销售徽章文本
- javascript - 速记 React 道具使用 transform-react-constant-elements Babel 插件导致参考错误
- flutter - 转换相机捕捉图像,如 camscanner 图像抖动
- python - 验证准确率没有增加,过度拟合?
- android - 如何使用 adb 授予应用程序管理员权限?
- reactjs - 将值设置为状态 React js
- reactjs - 警告:在 React 中实现搜索过滤器时遇到两个具有相同键的孩子
- python - 为什么我的 Python tkiner 天平同时移动?