5-2-2 遍历数组-线性搜索-for-each循环

来源:互联网 发布:我的知鸟怎么没有首页 编辑:程序博客网 时间:2024/06/04 20:29

在一堆数中找到某存在的数

是否存在并指出位置(老师的):

import java.util.Scanner;public class Main {   public static void main(String[] args) {   Scanner in = new Scanner(System.in);        int[] data = {3,2,5,7,4,9,11,34,12,28};         int x = in.nextInt();   int loc = -1;      for ( int i = 0; i < data.length; i++)   {   if (x == data[i])   {   loc = i ;   break;   }            }   if ( loc > -1 )   {//   (loc+1)使+不做字符串链接,做加法运算   System.out.println(x+"是第"+ (loc+1)+"个");      }   else   {   System.out.println(x+"不在其中");   }          }}

留意:

1.这样比自己写的多一个提示是第几个的功能

   int loc = -1;
   loc = i ;
   if ( loc > -1 )


2.括号的作用

//   (loc+1)使+不做字符串链接,做加法运算   System.out.println(x+"是第"+ (loc+1)+"个");

线性搜索缺点:

3.效率不高,以后再讲


4.遍历数组通常使用for循环,i是最大有效下标

for ( int i = 0; i < data.length; i++)   {   if (x == data[i])   {   loc = i ;   break;   }  

5.常见错误

1.循环结束条件写成<=数组长度

2.离开循环后用i值做数组元素下标




如果只需要知道是否存在,不需要位置(自己写的):

import java.util.Scanner;public class Main {   public static void main(String[] args) {   Scanner in = new Scanner(System.in);        int[] data = {3,2,5,7,4,9,11,34,12,28};         int number = in.nextInt();   boolean a = true;      for ( int i = 0; i < data.length; i++)   {   if (number == data[i])   {   System.out.println("存在");   a = false;      }            }   if (a)   {   System.out.println("不存在");   }             }}

个人感悟:

1.想要表达——如果没做.....就做........

   boolean a = true;
   a = false;
   if (a)   {      }





引入for-each循环——遍历数组的好方法

形式:

for(类型 变量 : 数组 )

{

}


例:对于数组data的每一个元素,循环的每一轮提取出来,变成k

for ( int k : data )


相比较,以前的写法:

<span style="white-space:pre"></span>for ( int i = 0; i < data.length; i++)


老师的程序:

import java.util.Scanner;public class Main {   public static void main(String[] args) {   Scanner in = new Scanner(System.in);        int[] data = {3,2,5,7,4,9,11,34,12,28};         int x = in.nextInt();   boolean found = false;   //   对于数组data的每一个元素,循环的每一轮提取出来,变成k   for ( int k : data )   {   if ( k == x)   {   found = true;   break;   }   }      if ( found )   {   System.out.println(x+"在其中");      }   else   {   System.out.println(x+"不在其中");   }          }}


两种程序不同的地方:

1.能指出第几个的:

   int loc = -1;      for ( int i = 0; i < data.length; i++)   {   if (x == data[i])   {   loc = i ;   break;   }            }   if ( loc > -1 )   {//   (loc+1)使+不做字符串链接,做加法运算   System.out.println(x+"是第"+ (loc+1)+"个");      }


2.指出是否存在的:

   boolean found = false;      for ( int k : data )   {   if ( k == x)   {   found = true;   break;   }   }      if ( found )   {   System.out.println(x+"在其中");      }






0 0
原创粉丝点击