遍历查找

2017-07-29  本文已影响0人  腹黑小叶子orz

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

遍历查找的时候,可以设一个下标不正确的数,最好使用负数,因为数组中正确的下标是从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,进行查找,当可以查找到的时候,在进行打印输出。

上一篇下一篇

猜你喜欢

热点阅读