JAVA 2022.7.12课程总结

本文详细介绍了JAVA的循环结构,包括for、while和do...while循环,通过实例讲解了各种循环的用法和特点。此外,还深入探讨了方法的定义、返回值类型以及如何在方法中使用逻辑控制语句。同时,提供了多个示例,如计算数组中的偶数、求和、冒泡排序等,帮助理解方法的应用。
摘要由CSDN通过智能技术生成

一、循环

for循环

while循环

do...while循环

1.for循环 明确循环多少次

        //变量声明(计数器)
        //判断(是否继续循环的条件)
        //计数器的调整(自增)

        //例题:从1打印到10
        for(int i=1;i<=10;i++) {
            System.out.println(i);
        }
        
        //例题:获取0-100之间的随机数,并且求和
        int[] arr=new int[20];
        for(int i=0;i<arr.length;i++) {
            //[0,1)--[0,100) random方法初始[0,1) 返回的是double类型 需要强制转换
            arr[i]=(int)(Math.random()*100); 
            //arr[i]=(int)(Math.random()*55)+25; //   [0,55)+25==[25,80)
        }
        System.out.println(Arrays.toString(arr));
        int sum=0;
        for(int i=0;i<arr.length;i++) {
            sum+=arr[i];
        }
        System.out.println(sum);

//例题:声明一个数组 随机生成数字到数组 并判断是否是偶数 打印该数组的所有偶数
        int[] a=new int[20];
        for(int i=0;i<a.length;i++) {
            a[i]=(int)(Math.random()*100); 
        }
        for(int i=0;i<a.length;i++) {
            if(a[i]%2==0) {
                System.out.println(a[i]);
            }
        }

2.while循环

whlie循环  不确定循环多少次
while循环可以一次都不执行

例题:从1打印到10
        int i=1;
        while(i<=10) {
            System.out.println(i);
            i++;
        }

        //例题:猫抓耗子
        //猫的重量为1,随机出现一只老鼠(重量)
        //猫抓住老鼠就吃掉,猫的重量就增加老鼠的重量
        //猫的重量超过了100,猫就撑死了
        
        int cat=1;
        int mouse=0;
        int count=0;
        while(cat<=100) {
            mouse=(int)(Math.random()*9)+1;
            cat+=mouse;
            count++;
        }
        System.out.println("猫一共抓了"+count+"只老鼠");

3.do...while循环

至少执行一次(第一次肯定会执行)(执行一遍后在判断是否继续)

do {...
         ....      }while(true);   //true死循环

4.逻辑控制语句

break;结束循环

continue; 结束本次循环

//例题:判断arr中有没有偶数
        int[] arr=new int[20];
        for(int j=0;j<arr.length;j++) {
            arr[j]=(int)(Math.random()*100);
        }
        boolean bool=false;
        for(int i=0;i<arr.length;i++) {
            if(arr[i]%2==0) {
                bool=true;
                //终止循环(结束)(循环结束了)
                break;
            }
        }

        //求非偶数元素的和
        int arr[]=new int[20];
        for(int i=0;i<arr.length;i++) {
            arr[i]=(int)(Math.random()*100);
        }
        int sum=0;
        for(int i=0;i<arr.length;i++) {
            if(arr[i]%2==0) {
                //结束本次循环,立即执行下一次循环
                continue;
            }
            sum+=arr[i];
        }

    //例题:68之内的因数 以及和
        int i=68;
        int j;
        int s=0;
        for(j=1;j<=68;j++) {
            if(i%j==0) {
                System.out.println(j);
                s+=j;
            }
        }System.out.println(s);

//例题:50-100之间的因数之和
        int s=0;
        for(int i=50;i<=100;i++) {
            for(int j=1;j<=i;j++) {
                if(i%j==0) {
                    s+=j;
                }
            }
        }System.out.println(s);

        //完数:除自身之外所有的因数之和等于自身
        //例题:打印出1000以内的完数
        for(int i=2;i<=1000;i++) {
            int s=0;
            for(int j=1;j<i;j++) {
                if(i%j==0) {
                    s+=j;
                }
            }
            if(s==i) {
                System.out.println(i);
            }
        }
        

        //例题:打印1000以内的质数
        boolean bool;
        for(int i=2;i<=1000;i++) {
            //判断i是否是质数?
            //标记i是质数
            bool=true;
            for(int j=2;j<i;j++) {
                //j代表可能被整除的数
                if(i%j==0) {
                    bool=false;
                    break;
                }
            }
            if(bool) {
                System.out.println(i+"是质数");
            }
        }

二、方法

//        方法的定义
//        public 访问权限修饰符
//        static 静态的,类的
//        void  返回值类型  void方法没有返回值
//        main  方法名
//        (参数部分) 参数列表   形参&实参
//        {方法体}
    public static void main(String[] args) {

    public static void main(String[] args) {
        //实参的个数和类型必须和形参对应
        int sum=sum(2,3);//执行方法
        System.out.println(sum);
    }
    //返回值类型的定义
    //该方法必须返回一个该类型的值
    static int sum(int a,int b) {
        int sum=a+b;
        return sum;
    }

    //例题:定义一个方法获取一个(整数)数组的最大值    
    static int max(int[] arr) {
        int maxx=arr[0];
        for(int i=1;i<arr.length;i++) {
            if(arr[i]>maxx) {
                maxx=arr[i];
            }
        }return maxx;
    }

一个代码块中return是最后一行代码 

//例题:定义一个方法获取两个值的最大值
    //第一种方法
//    static int max(int a,int b) {
//        int max=a;
//        if(b>max) {
//            max=b;
//        }
//        return max;
//    }
    //第二种方法
//    static int max(int a,int b) {
//        int max;
        if(a>b) {
            max=a;
        }else {
            max=b;
        }
    return max;
    //第三种方法
//    static int max(int a,int b) {
//        return a>b?a:b;
//    }

    //获取三个浮点型数值的最大值
    static double maxx(double q,double w,double e) {
        double maxx=q>w?q:w;
        return maxx=maxx>e?maxx:e;
    }

    //返回一个数组中所有的偶数

    public static void main(String[] args) {

        int[] a= {1,2,3,4,5,6,7};
        int[] b= even(a);
        System.out.println(Arrays.toString(b));

    }
    static int[] even(int[] arr) {
        int s=0;
        int[] arrnew=new int[arr.length];
        for(int i=0;i<arr.length;i++) {
            if(arr[i]%2==0) {
                arrnew[s]=arr[i];
                s++;
            }
        }
        int[] s1=new int[s];
        for(int j=0;j<s;j++) {
            s1[j]=arrnew[j];
        }
        return s1;

三、冒泡排序

public static void main(String[] args) {
        int[] arr= {34,12,45,56,2,7,1}; 
        //前后一次比较,将数值大的往后排
        int temp;
        boolean flag;
        //确定元素的个数
        for(int j=0;j<arr.length-1;j++) {  
            //-1最后一个不用比较 -j减少冗余
            //将最大值放在最后位置
            //没有发生过交换
            flag=false;
            for(int i=0;i<arr.length-j-1;i++) {
                if(arr[i]>arr[i+1]) {
                    temp=arr[i];
                    arr[i]=arr[i+1];
                    arr[i+1]=temp;
                    //发生交换了
                    flag=true;
                }
            }
            if(!flag) {
                System.out.println("已经排好了");
            }
        }System.out.println(Arrays.toString(arr));
    }

    //例题:定义一个方法,对一个数组进行排序(升序)
    //冒泡排序
    public static void main(String[] args) {

        int[] b=new int[]{8,16,5,2,4};
        int[] c=paixu(b);
        System.out.println(Arrays.toString(c));

    }
    static int[] paixu(int[] arr) {
        int a;
        for(int j=0;j<arr.length-1;j++) {
            for(int i=0;i<arr.length-1;i++) {
                if(arr[i]>arr[i+1]) {
                    a=arr[i];
                    arr[i]=arr[i+1];
                    arr[i+1]=a;
                }
        }
        }
        return arr;
    }

四、插入排序

    public static void main(String[] args) {
        int[] arr= {23,45,56,2,1,67,90,6};
        for(int j=1;j<arr.length;j++) {
        int temp=arr[j];
        int i;
        for(i=j-1;i>=0;i--) {
            if(temp<arr[i]) {
                arr[i+1]=arr[i];
            }else {
                arr[i+1]=temp;
                break;
            }
        }
        if(i==-1) {
            arr[0]=temp;
        }
        
        }
        System.out.println(Arrays.toString(arr));
    }

例题:定义一个方法返回一个数组的去重部分

public static void main(String[] args) 
        int[] b=new int[]{8,16,5,2,4,4,16,8};
        int[] c=quchong(b);
        System.out.println(Arrays.toString(c));
    }
    
    static int[] quchong(int[] arr) {
        int[] rez =new int[arr.length];//声明一个数组,长度为传入数组的长度
        int a = 0;
        int j=0;
        
        boolean bool=true;
        for (int i = 0; i < arr.length; i++) {
           for(int t:rez) {
               if(t==arr[i]) {
                   bool=false;
               }
           }
           if(bool) {
               rez[i]=arr[i];
               j++;
           }
        }
        int[] rezz =new int[j];
        for(int s=0;s<j;s++) {
            rezz[s]=rez[s];
        }
        return rezz;

    }

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值