在一堆数中找到某存在的数
是否存在并指出位置(老师的):
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 )
// (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)+"个");
}
boolean found = false;
for ( int k : data )
{
if ( k == x)
{
found = true;
break;
}
}
if ( found )
{
System.out.println(x+"在其中");
}