java零基础入门学习第四天——相关笔记

49 篇文章 0 订阅
21 篇文章 0 订阅

Java04

循环结构:

循环,即事物周而复始的变化。循环结构,使一部分代码按照次数一定的条件反复执行的一种代码结构。

循环结构的分类:for循环;while循环;do……while循环

for循环:用于循环次数已知的

格式:

for(初始化语句;判断语句;控制语句) {

​ //循环体

}

案例:

需求:在控制台输出5次HelloWorld

package cn.hjh.demo;

public class ForDemo {
    public static void main(String[] args) {
        //需求:在控制台输出5次HelloWorld

        //原始做法
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("HelloWorld");
        System.out.println("————————————————————");

        //for循环做法
        for (int i = 1;i <= 5;i++) {
            System.out.println("HelloWorld");
        }
    }
}
package cn.hjh.demo;

public class ForDemo2 {
    public static void main(String[] args) {
        //需求:在控制台依次输出1~5和5~1的数字

        //1~5
        //传统做法
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);
        System.out.println(5);
        System.out.println("——————————");
        //通过上述的代码发现:输出语句的次数是固定的,只有内容在改变,对于这种情况,可以采用for循环来解决,从而减少代码量
        //for循环做法
        for (int i = 1;i <= 5;i++) {
            System.out.println(i);
        }
        System.out.println("——————————————————");

        //5~1
        //省略传统做法
        //for循环
        for (int a = 5;a >= 1;a--) {
            System.out.println(a);
        }
    }
}
package cn.hjh.demo;

public class ForDemo3 {
    public static void main(String[] args) {
        //需求:计算1~5之间的数据之和,并输出总和
        
        //1.定义一个求和变量,初始化值为0。使用变量要记得赋值
        int sum = 0;
        //2.通过for循环获取1~5之间的数据
        for (int i = 1;i <= 5;i++) {
            //3.把获取到的数据依次累加给变量sum
            sum += i;
        }
        //4.打印输出结果
        System.out.println(sum);
    }
}
package cn.hjh.demo;

public class ForDemo4 {
    public static void main(String[] args) {
        //需求:计算1~100之间的所有偶数和
        //1.定义一个求和变量sum,初始化值为0
        int sum = 0;
        //2.获取1~100的数据
        for (int i = 1;i <= 100;i ++) {
            //3.判断是否是偶数,是则累加,不是就继续获取
            if (i % 2 == 0) {
                //到此的i都是偶数
                sum += i;
            }
        }
        //4.打印结果
        System.out.println("sum:"+sum);
    }
}
package cn.hjh.demo;

public class ForDemo5 {
    public static void main(String[] args) {
        //需求:在控制台输出所有的“水仙花数”
        //水仙花数:是指一个三位数(100~1000),其各位数的立方和等于该数本身。如153:1*1*1+5*5*5+3*3*3=1+125+27=153
        //1.通过for循环获取所有的三位数
        for (int i = 100;i < 1000 && i >= 100;i ++) {
            //2.获取每一个三位数的个位,十位,百位。个位:153%10=3;十位:153/10%10=5;百位:153/100%10=1
            //a是个位,b是十位,c是百位
            int a = i % 10;
            int b = i / 10 % 10;
            int c = i / 100 % 10;
            //方式一
            if (a*a*a+b*b*b+c*c*c==i) {
            //此处的i是水仙花数
                System.out.println(i);
            }
            //方式二
//            int sum = (a*a*a)+(b*b*b)+(c*c*c);
            //3.拿个位,十位,百位的立方和一概述本身进行比较,如果相等,则在控制台打印该数
//            if (sum==i) {
//                System.out.println(i);
//            }
        }
    }
}
package cn.hjh.demo;

public class ForDemo6 {
    public static void main(String[] args) {
        //需求:统计水仙花数的个数

        //1.定义统计变量count,即计数器,初始化为0
        int count = 0;
        //2.获取所有的三位数,即100~1000之间的数
        for (int i = 100;i >= 100 && i < 1000;i ++) {
            //3.判断每一个三位数是否为水仙花数,是则count自增1,count++;
            //a是个位,b是十位,c是百位
            int a = i % 10;
            int b = i / 10 % 10;
            int c = i / 100 % 10;
            int sum = (a*a*a)+(b*b*b)+(c*c*c);
            if (sum == i) {
                count ++;
                //count += 1;
                //++ count;
            }
        }
        //4.循环结束,输出计数器count的值
        System.out.println("水仙花数的个数是:"+count);
    }
}

while循环:用于循环次数不固定的,先判断再循环

格式:

初始化语句;

while(判断条件语句) {

​ 循环体语句;

​ 控制条语句;

}

注意事项:

初始化语句可以省略;控制条件语句可以省略

案例:

需求:在控制台输出5次"HelloWorld"

package cn.hjh.demo;

public class WhileDemo {
    public static void main(String[] args) {
        //需求:在控制台输出5次"HelloWorld"

        //for循环方式
        //int i = 1;是初始化语句      i <= 5;是判断条件语句        i++是控制条件语句 
        for (int i = 1;i <= 5;i++) {
            System.out.println("HelloWorld");
        }

        System.out.println("————————————");
        //while循环方式
        int i = 1;      //初始化语句
        while (i < 6) {         //括号内为判断条件语句
            System.out.println("HelloWorld");       //循环体语句
            i ++;           //控制条语句
        }
    }
}

需求:求1~100之间的数据和

package cn.hjh.demo;

public class WhileDemo2 {
    public static void main(String[] args) {
        //需求:求1~100之间的数据和
        //1.定义求和变量sum,初始化为0
        int sum = 0;
        int i = 1;
        //2.使用whlie循环获取1~100之间的数据
        while (i <= 100) {
            //3.将每一个数据累加到sum变量上
            sum += i;
            i ++;
        }
        //4.循环结束,输出sum的值
        System.out.println("sum="+sum);
    }
}

do……while循环:先执行一次,再判断

格式:

初始化语句;

do {

​ 循环体语句;

​ 控制条件语句;

} while (判断条件语句);

注意事项:

while小括号后的分号不可省略;do……while循环的循环体语句至少执行1遍

案例:

需求:用do……while循环模拟:学习一个知识,至少练习一次

package cn.hjh.demo;

public class DoWhileDemo {
    public static void main(String[] args) {
        //需求:用do……while循环模拟:学习一个知识,至少练习一次
        //1.定义一个int变量的计数器count,即练习的次数,初始化为1
        int count = 1;
        //2.定义boolean型变量isOk,作为一个标记,表示是否学会,初始化值为false,表示没学会,true表示已经学会
        boolean isOk = false;

        //3.在do……while循环体中:输出正在练习的次数,判断当练习次数不少于3次时,表示已学会:isOk=true;
        do {
            System.out.println("已练习"+count+"次");
            //判断练习次数
            if (count >= 3) {
                //执行到此,说明练习次数不少于3次
                System.out.println("已经学会该知识点");
                isOk =true ;        //练习次数不少于3次,表示已学会这个知识点,将isOk的值改为true
            }
            //每练习一次,次数自增1:count++
            count ++;
        } while (!isOk);            //判断是否学会这个知识点,isOk为true结束循环
    }
}
三种循环的区别:

1.格式的不同:

for循环各部分形成一个整体;while和do……while的初始化语句与循环定义分离;while和do……while的初始化语句、控制语句一般都可以省略,而for循环一般不省略

2.初始化语句的不同:

定义位置不同;作用域不同:for循环初始化语句仅限循环内使用;while和do……while的初始化语句可以在循环外使用

3.循环体执行次数的不同:

for和while执行0-n次;do……while执行1-n次,即至少执行一次;

**4.使用场景的不同:**for和while可以互换,但while格式更简洁;仅当循环体至少需要执行一次时使用do……while(不管判断条件是否成立,循环体都会先执行一次)

package cn.hjh.demo;

public class DoWhileDemo2 {
    public static void main(String[] args) {
        //需求:演示是三种循环的区别
        /*
            1.格式不同
            2.初始化语句不同
            3.循环体的执行次数不同
            4.使用场景不同
         */
        //案例:分别通过三种循环打印1~5之间的数字
        //for循环
        for (int i = 1;i < 6;i++) {
            System.out.println("i="+i);
        }
        System.out.println("——————————");
        //while循环
        int a = 1;
        while (a < 6) {
            System.out.println("a="+a);
            a++;
        }
        System.out.println("————————————");
        //do……while循环
        int c =1;
        do {
            System.out.println("c="+c);
            c++;
        }while (c<6);
    }
}
死循环(无线循环):
for循环:

for(;😉 {

​ //循环体,根据实际需求结束循环(一直循环)

}

while循环:

while(true) {

​ //循环体,根据实际需求结束循环(一直循环)

}

package cn.hjh.demo;

public class DeadDemo {
    public static void main(String[] args) {
        //需求:演示死循环
        /*
            格式一
                for(;;) {
                    //循环体
                }
            格式二
            while(true) {
                    //循环体
            }
         */
//        for (;;) {
//            System.out.println("你是猪吗");
//        }
        System.out.println("————————————");
        while (true) {
            System.out.println("你是笨猪吗");
        }
    }
}
break和continue:

break用于中断,用于switch语句和循环语句:

在switch语句中,表示结束switch代码块;在循环语句中表示结束循环。

案例:

需求:查找班级编号为3的同学(假设班级中有15位同学)

package cn.hjh.demo;

public class BreakDemo {
    public static void main(String[] args) {
        //需求:查找班级编号为3的同学(假设班级中有15位同学),找到后循环结束

        //1.通过for循环获取每一位痛的编号
        for (int i = 1;i <= 15;i++) {
            //为了显示break语句的作用,用一个输出语句提示
//            System.out.println("我是编号为"+i);
            //通过if语句判断编号是否为3
            if (i==3) {
                System.out.println("找到了编号为"+i+"的学生");
                break;
            }
        }
    }
}

continue(继续):用于循环语句,表示结束本次循环,继续下次循环

案例:

需求:一起玩逢7必过小游戏

游戏规则:多人围坐在一起,依次快速说出从1~100的数字,所有含7的或7的倍数的数不能说,否则就失败受到惩罚

package cn.hjh.demo;

public class ContinueDemo {
    public static void main(String[] args) {
        //模拟逢7必过小游戏
        //通过for循环获取1~100之间的数据
        for (int i = 1;i < 100;i++) {
            //方式一
            int a = i % 10;
            int b = i / 10 % 10;
            int c = i % 7;
            if (a == 7 || b == 7 || c == 0) {
                System.out.println("*");
                continue;
            }
            //方式二
//            if (i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0) {
//                System.out.println("炸弹");
//                continue;
//            }
            System.out.println(i);
        }
    }
}

循环嵌套:在一个循环体语句中包含另一个循环语句时,称为循环嵌套

System.out.println();       //输出语句的内容为空的作用:换行
快捷键:for+i+Enter即可直接得以下的代码
//        for (int i = 0; i < ; i++) {
//
//        }

案例:

需求:按班级获取所有同学(3个班级,每班5个同学)

package cn.hjh.demo;

public class DoubleDemo {
    public static void main(String[] args) {
        //需求:按照班级获取该班级所有的同学(假设一共有3个班级,每一个班级5名同学)

        //原始做法:获取第一个班级的每个同学,但是代码都是重复的
//        for (int i = 1;i < 6;i ++) {
//            System.out.println("这是1班的"+i+"号同学");
//        }
//        System.out.println();       //输出语句的内容为空的作用:换行
//        for (int i = 1;i < 6;i ++) {
//            System.out.println("这是2班的"+i+"号同学");
//        }
//        System.out.println();
//        for (int i = 1;i < 6;i ++) {
//            System.out.println("这是3班的"+i+"号同学");
//        }
        //循环嵌套方式
//        获取每一个班级
//        快捷键:for+i+Enter即可直接得以下的代码
//        for (int i = 0; i < ; i++) {
//
//        }
        for (int a = 1;a <4;a ++) {
            for (int b = 1;b < 6;b ++) {
                System.out.println("这是"+a+"班"+"的"+b+"号同学");
            }
            System.out.println();       //每次循环完毕后换行
        }
    }
}
标号

概念:即循环的名称。给循环定义一个标号,就可以根据需要结束或跳转到指定的循环,常用于多层嵌套循环中

语法:

标号:for() { } //while和do……while举例略

​ break 标号; //结束指定标号的循环

​ continue 标号; //跳转到指定标号的循环继续执行

案例:break 标号;

需求:程序猿同学受邀加入A公司,现按班级查找程序猿同学。现有3个班级,每班10同学,假设第2个班级的第5名同学名叫程序猿,找到该同学后则停止查找。

package cn.hjh.demo;

public class BreakDemo2 {
    public static void main(String[] args) {
        //通过for循环获取每一个班级
        c_class:for (int i = 1;i < 4;i ++) {
            //在班级循环中再次通过for循环获取每个班级的每个学生
            for (int a = 1;a < 11;a ++) {
                System.out.println("正在查找第"+ i +"个班级的第"+ a +"名同学");
                if (i == 2 && a == 5) {
                    System.out.println("结束查找");
                    break c_class;      //结束班级查找的循环
                }
            }
        }
        System.out.println();       //换行
    }
}

循环综合案例:循环嵌套+break+continue+标号

需求:假设有3个班级,每个班级有35个同学,现在要将100个橙子分别发给每位同学,每人只能拿一个。

条件:如果该同学已经有了橙子,则不再发给该同学;如果橙子发完了,则发放活动终止。假设编号为5的倍数的同学都已经有橙子了

package cn.hjh.demo;

public class AllDemo {
    public static void main(String[] args) {
        //1.定义变量,记录发送的橙子总数
        int count = 0;      //还没发放橙子

        //2.通过for循环,获取到每一个班级
        c_class:for (int i = 1; i < 4; i++) {
            //3.在班级的循环内,再次通过for循环获取每位同学
            for (int s = 1;s < 36;s ++) {
                //4.判断该同学是否有橙子
                if (s % 5 == 0) {
                    //说明有橙子,就不发了
                    continue;          //结束本次循环,进行下一次循环
                }
                //6.如果没有,就给该学生发橙子
                System.out.println("正在给第"+i+"班级的第"+s+"同学发放橙子");
                //7.每发送一个橙子,count就加一
                count ++;
                //8.如果橙子发放完了,就结束发放活动
                if (count >= 100) {
                    System.out.println("橙子发完了");
                    break c_class;
                }
            }
            System.out.println();
        }
        System.out.println("一共发放了"+count+"个橙子");
    }
}
Random类

Random,即随机数。用于产生随机数的类。

使用步骤:

1.导包(使用Random类,需要先导包)

import java.util.Random;

2.创建Random类的对象(使用一个类之前,要先创建它的对象)

Random r = new Random();

3.获取随机数(获取int型随机数)

int num = r.nextInt(100);
package cn.hjh.demo;

import java.util.Random;

public class RandomDemo {
    public static void main(String[] args) {
        //需求:获取一个随机数
        //1.创建一个Random类的对象(包含:导包,创建对象)
        Random r = new Random();

        //2.通过r.nextInt(int数字)的方式来获取随机数
//        int num = r.nextInt(100);           //100的意思是获取随机数的范围是0~10之间的数字,包含0不包含10,就是0~9这10个数字,前闭后开
//        System.out.println(num);

        //获取100以内的10个随机数
        for (int i = 0;i < 10;i ++) {
            int num = r.nextInt(100);
            System.out.println(num);
        }
    }
}

案例:猜数字小游戏(技术点:Random类产生随机数+Scanner实现键盘录入+if语句的第三种格式+死循环)

需求:系统产生一个1~100之间的随机数,请猜出这个数是多少

package cn.hjh.demo;

import java.util.Random;
import java.util.Scanner;

public class RandomDemo2 {
    public static void main(String[] args) {
//            猜数字游戏
        //1.获取一个1~100之间的随机数
        //1.1创建Random类对象
        Random r = new Random();
        //1.2获取指定范围的随机数
        //100代表的是0~99,但需求是要1~100,所以要+1
        int num = r.nextInt(100)+1;
        //2.通过键盘录入获取用户猜的数字
        //2.1创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //死循环,直到猜对为止
        while (true) {
            //2.2提醒用户输入数字,并接受
            System.out.println("请输入1~100之间的数字");
            int c = sc.nextInt();
            //对比两个数字
            if (num == c) {
                System.out.println("恭喜你猜中了");
                System.out.println(num);
                break;
            }else if (c > num) {
                System.out.println("你猜的数据"+c+"大了");
            }else {
                System.out.println("你猜的数据"+c+"小了");
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值