今天回顾了简单算法,顺序查找。发现了数组出现重复数字,无法输出第二个位置就跳出循环了。

利用所学知识解决了。放上代码,同时在代码里给大家分享思路。

欢迎大神教导,欢迎指正。


import java.util.Scanner;

public class Test_顺序查找 {
// 主函数,定义数组,输入要查找的数
public static void main(String[] args) {
int[] arr = {10,22,13,5,10,16,2,0,16,4};
System.out.println("请要查找的数");
Scanner input = new Scanner(System.in);

int num = input.nextInt();
System.out.println("你要查找的数为:"+num);

find(arr,num);
}

/**
*在数组中查找 指定数 的位置。
* @param arr 进行循环查找的数组
* @param num 查找的数
*/
public static void find(int arr[] ,int num) {

//
下面用pos表示位置,pos最大值为数组长度+1(数组下标是从0开始)
// 所以我用 一个不可能到达的数组长度+2(arr.length+2),作为判断不存在的数。

int pos = arr.length+2 ;

//
进行循环查找,查找到以后返回所在的位置,因为下标从0开始,所以pos+1
// printf是格式化输出

for (int i=0;i<arr.length;i++){
if (arr[i] == num){
pos = i+1;
System.out.printf
("你要查找的数在第%d位\n",pos+1);
}
}

//如果pos没有发生变化,还是我们一起定义的值。说明没有找到,即查找的数不存在。

if (pos == arr.length+2){
System.out.print
ln("不存在的");
}
}
}

输出结果:



我理想中的输出结果应该是:
你要查找的数为: * ,他在数组的第*位,第*位。
    用String.format()链接的那种, 直接输出n个位置。不是简单的拼接噢。
有没有小伙伴或者大叔帮我实现这个功能。