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 个回复

倒序浏览
不用flag,for循环if(num==arr[a])成立则直接输出“找到”,然后return就行了。没有return、出了for循环就是没找到,输出“找不到”即可
回复 使用道具 举报
你这个方法我试了 会输出arr.length个找不到,我忘了学的时候怎么写的啦,自己想想感觉不对劲,就发帖问问:'(
回复 使用道具 举报
其实我试了好几次 把输出语句换了好几个位置,都不行,跳不出循环。要是后面没有else这个还能跳出循环{:3_50:}
回复 使用道具 举报
本帖最后由 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("您查询的数字不在数组里面");            
}




回复 使用道具 举报
给楼主一个新的写法,可以直接用集合去做,将数组转成集合,用集合方法自动查找。会比循环比较方便点。
  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. }
复制代码

回复 使用道具 举报
仰天长啸 发表于 2015-3-2 20:28
你这个方法我试了 会输出arr.length个找不到,我忘了学的时候怎么写的啦,自己想想感觉不对劲,就发帖问问: ...

不会出现这种情况的。你是还没明白我的意思
回复 使用道具 举报
huangchunwei 来自手机 中级黑马 2015-3-3 07:52:43
8#
学习学习。
回复 使用道具 举报
如果找到就跳出循环,没必要在找下去了
回复 使用道具 举报
可以用集合  或者数组的工具类   代码不用写  只要调用方法就可以
回复 使用道具 举报
这个 写代码 首先能写出来就行,然后在此基础上想法自己研究下简化。时间长了写的代码就简单化了
回复 使用道具 举报
上完传智播客回来的路上就想 我必须进去黑马,因为这是最后的一条可以选择的路!!!压力很大
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马