A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//定义一个包含10个整数,然后查询任意这个数字是否在该10个数字内
public class first004 {
        public static void main(String[] args) {
                int [] arr={11,23,45,67,81,90,33,77,88,10};
                find(arr);
               
        }

        private static void find(int [] arr) {
                System.out.println("您输入您要查询的数字");
                Scanner sc=new Scanner(System.in);
                int num=sc.nextInt();
                boolean flag = true;
                for(int a=0;a<arr.length;a++){
                        if(num==arr[a]){
                                flag=true;
                        }   
                       
                        else{
                                flag=false;
                        }
                        }
                        if(flag==true){
                                System.out.println("您查询的数字在数组里面");
                                }
                        if(flag==false){
                                System.out.println("您查询的数字不在数组里面");
                        }
                }       
}

评分

参与人数 1黑马币 +6 收起 理由
fantacyleo + 6 good question

查看全部评分

11 个回复

正序浏览
上完传智播客回来的路上就想 我必须进去黑马,因为这是最后的一条可以选择的路!!!压力很大
回复 使用道具 举报
这个 写代码 首先能写出来就行,然后在此基础上想法自己研究下简化。时间长了写的代码就简单化了
回复 使用道具 举报
可以用集合  或者数组的工具类   代码不用写  只要调用方法就可以
回复 使用道具 举报
如果找到就跳出循环,没必要在找下去了
回复 使用道具 举报
huangchunwei 来自手机 中级黑马 2015-3-3 07:52:43
8#
学习学习。
回复 使用道具 举报
仰天长啸 发表于 2015-3-2 20:28
你这个方法我试了 会输出arr.length个找不到,我忘了学的时候怎么写的啦,自己想想感觉不对劲,就发帖问问: ...

不会出现这种情况的。你是还没明白我的意思
回复 使用道具 举报
给楼主一个新的写法,可以直接用集合去做,将数组转成集合,用集合方法自动查找。会比循环比较方便点。
  1. //定义一个包含10个整数,然后查询任意这个数字是否在该10个数字内
  2. class first004 {
  3.         public static void main(String[] args)
  4.         {
  5.                 Integer [] arr={11,23,45,67,81,90,33,77,88,10};
  6.                 find(arr);
  7.                
  8.         }

  9.         private static void find(Integer [] arr)
  10.         {
  11.                 System.out.println("您输入您要查询的数字");
  12.                 Scanner sc=new Scanner(System.in);
  13.                 int num=sc.nextInt();
  14.                 boolean flag = false;
  15.                
  16.                 List<Integer> list =  Arrays.asList(arr);
  17.                
  18.                 if(list.contains(sc))
  19.                 {
  20.                         System.out.println("存在");
  21.                 }
  22.                 else
  23.                 {
  24.                         System.out.println("不存在");
  25.                 }
  26.         }
  27. }
复制代码

回复 使用道具 举报
本帖最后由 z47057554 于 2015-3-2 23:33 编辑

这是我做的精简,希望对你有帮助:
private static void find(int [] arr) {
        System.out.println("您输入您要查询的数字");
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();

        boolean flag = false;//true-->false
        for(int a=0;a<arr.length;a++){
                if(num==arr[a]){
                        flag=true;//只在找到时变为真,找不到依然为假                                               break;                           
              }
        }
                 
        if(flag==true)
                System.out.println("您查询的数字在数组里面");
     else
                System.out.println("您查询的数字不在数组里面");            
}




回复 使用道具 举报
其实我试了好几次 把输出语句换了好几个位置,都不行,跳不出循环。要是后面没有else这个还能跳出循环{:3_50:}
回复 使用道具 举报
你这个方法我试了 会输出arr.length个找不到,我忘了学的时候怎么写的啦,自己想想感觉不对劲,就发帖问问:'(
回复 使用道具 举报
不用flag,for循环if(num==arr[a])成立则直接输出“找到”,然后return就行了。没有return、出了for循环就是没找到,输出“找不到”即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马