美文网首页
遍历查找

遍历查找

作者: 腹黑小叶子orz | 来源:发表于2017-07-29 18:55 被阅读0次

    查找中最简单的是遍历查找,但同时也是很麻烦的,从头至尾,挨个查找。

    遍历查找的时候,可以设一个下标不正确的数,最好使用负数,因为数组中正确的下标是从0开始到1结束,所以定义负数是比较正确的选择。

    我想在一个数组中找到一个数字,比如5,可以定义一个index,后面的函数中的参数,可以用arr表示数组,5表示要查找的数。如:

    int index = findNumber(arr, 5);

    代码如下:

    import java.util.Scanner;

    class NormalSearch {
     public static void main(String[] args) {
      int[] arr = new int[10];//定义数组
      
      boolean ret = getNumFromStdin(arr);//getNumFromStdin是布尔型,有返回值,从屏幕上获取数字作为数组的元素,再次获得了10个元素,并且用布尔型为下面的查找数字做判断
      
      if (ret) {

       int index = findNumber(arr, 5);//找数组里元素是5
       if (index >= 0) {//index在下面定义为-1,若是没有找到index值不会改变,此处就会执行not found
        System.out.println("5 at " + index);
       } else {
        System.out.println("Not Found!");
       }
      }
      
      
      
     }
     
     //需求:从一个数组中找到用户输入的数所在下标
     /**
      功能:从给定的数组中找到find
      参数: int[] arr 要查询的数组
         int find 给定要查找的数
      返回值: int 类型, 找到返回 有效下标 如果没有找到返回 -1
        如果参数 有误 返回 -2
     */
     public static int findNumber(int[] arr, int find) {
      //参数合法性判断
      if (arr == null || arr.length == 0) {
       System.out.println("Input Param is invalid!");
       return -2; //表示函数运行失败
      }
      
      int index = -1;  //0 ~ 9是合理的下标
      //利用循环遍历查找
      for (int i = 0; i < arr.length; i++) {
       if (find == arr[i]) {
        index = i;//将得到的i值赋给index,作为找到的数字传递出去
        break; //跳出循环,已经找到了对应值下标
       }
      }
      
      return index;//返回数值
     }
     
     public static boolean getNumFromStdin(int[] array) {
      //参数合法性判断
      if (array == null || array.length == 0) {
       System.out.println("Input Param is invalid!");
       return false; //表示函数运行失败
      }
      
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入" + array.length + "个数:");
      
      for (int i = 0; i < array.length; i++) {
       array[i] = sc.nextInt();//将屏幕上得到的数字一一赋值给数组。
      }
      
      return true;
     }
     
     public static void printArray(int[] array) {
      //参数合法性判断
      if (array == null || array.length == 0) {
       System.out.println("Input Param is invalid!");
       return; //传入参数不合法,结束函数运行
      }
      
      //利用for循环打印数组
      for (int i = 0; i < array.length; i++) {
       System.out.println("array[" + i + "] = " + array[i]);
      }
      //这里可以不用写return 因为函数没有返回值
     }
    }

    步骤:

    1.定义数组

    2.先进行找到数值的函数书写,利用遍历查找。遍历查找就是一一对比,设定一个不正确的值,若找到则进行更改。

    3.获得数组的字符的操作。从屏幕上获取数字的Scanner。利用布尔类型传递真假。

    4.打印数组的操作,利用for循环,一一打印

    5.对获取数字的操作进行接收,boolean判断,为下一步的找到数字的函数调用做准备。

    6.利用上面获取数组的操作,判断是否找到

    7.找到进行打印输出。

    最后的5,6,7其实是一个嵌套的过程。当屏幕上获取数字是正确的时候,if的值为true,进行查找,当可以查找到的时候,在进行打印输出。

    相关文章

      网友评论

          本文标题:遍历查找

          本文链接:https://www.haomeiwen.com/subject/ukwqlxtx.html