• 【JavaSE】-4-单层循环结构


    回顾

    运算符:

    算术 ++ --、逻辑 && & || |、比较 ==、三元 、赋值 =

    int i = 1;
    i++;
    j = i++; //j=2 i=3
    syso(--j+"-----"+i++)  //1  3 
    
    • 1
    • 2
    • 3
    • 4

    选择结构

    if(){
    
    }
    if(){
    
    }else{
    
    }
    if(){
    
    }else if(){
    
    }else if(){
    
    }else{
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    //支持byte、short、int 
    //支持char
    //支持枚举
    //从jdk8开始 支持String字符串类型
    switch(表达式){
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    循环结构

    循环目的:实现某一块代码多次重复执行。

    for循环

    for(表达式一;表达式二;表达式三){
    	//循环体
    }
    
    • 1
    • 2
    • 3

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    示例:

    /*
    		 * 需求:在控制台打印出所有的水仙花数。
    		 * 水仙花数: 是一个三位数,
    		 * 水仙花数的个位、十位、百位数字的立方之和等于原数。
    		 */
    		for(int i=100;i<1000;i++) {
    			int g = i%10; 
    			int b = i/100;//121
    			int s = i/10%10;
    			if(g*g*g + b*b*b + s*s*s == i) {
    				System.out.print(i+"  ");
    			}		
    		}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    /*
    		 * 1. 需求:数7游戏。从1到100(不含100), 
    		 * 如果数是7的倍数或者包含7输出“过”,否则输出数字本身。
    		 */
    		for(int i=1;i<100;i++) { //65
    			//7的倍数 i%7==0
    			//包含7  个位i%10==7    十位i/10==7
    			if(i%7==0 || i%10==7 || i/10==7) {
    				System.out.print("过 ");
    			}else {
    				System.out.print(i+" ");
    			}
    		}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    for循环变形及死循环

    for(表达式1;表达式2;表达式3){
    	循环体
    }
    
    • 1
    • 2
    • 3

    代码:

    	public static void main(String[] args) {
    		for( ; ; ) {
    			System.out.println("hello world");
    		}
    		System.out.println("end");//这行代码永远执行不到
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上面的示例,没有任何语句控制循环的结束。所以会无限打印hello world,导致循环后面的代码永远执行不到。

    注意:如果程序中出现死循环,Eclipse会报错,不允许你执行。

    代码:

    	public static void main(String[] args) {
    		for(int i = 0 ; i != 10 ; i += 3 ) {
    			System.out.println("hello world");
    		}
    		System.out.println("end");//这行代码永远执行不到
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上面的示例,虽然表达式完整,但是 i != 10会永远为真,因此也是一个死循环。导致for循环后面的代码无法执行

    代码:

    //		int i ;
    //		for(i=1;;) {
    //			
    //		}
    		
    //		int i = 1;
    //		for(;;) {
    //			System.out.println(i);
    //		}
    		
    //		for(int i = 1;i < 10;i--) {
    //			System.out.println(i);
    //		}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    	int i = 1;
    	for(;i < 10;) {  //不会发生死循环
    		System.out.println(i++);
    	}
    
    • 1
    • 2
    • 3
    • 4

    while循环

    do…while循环

    Random随机数

    random.nextInt(3); // 得到的是一个 [0,3)的数值

    随机数的规律:要想产生一个[min, max]之间的随机数。

    int num = random.nextInt(max - min + 1) + min;

    随机数的规律:要想产生一个[min, max) 之间的随机数。

    int num = random.nextInt(max - min) + min;

    随机数范围

    [0,10]
    [0,10)
    [10,15]
    (10,15]
    
    • 1
    • 2
    • 3
    • 4
    Random r = new Random();
    		//生成boolean类型随机数
    		boolean flag = r.nextBoolean();
    		//生成int范围的随机数
    		int num1 = r.nextInt();
    		//生成double类型的随机数
    		double d1 = r.nextDouble();
    		
    		//指定范围 0<=num<3
    		int num2 = r.nextInt(3);//[0,3)
    		//生成一个随机数  0<=num<=3
    		int num3 = r.nextInt(4);
    		
    		
    		//生成一个随机数  5<=num<10  //5  [0-5)
    		//r.nextInt(10-5)+5  r.nextInt(max-min)+min
    		int num5 = r.nextInt(5)+5;
    		//生成一个[15-20)之间的随机数
    //		for(int i=0;i<10;i++) {
    //			int num6 = r.nextInt(20-15)+15;
    //			System.out.println(num6);
    //		}
    		//生成一个[15-20]之间的随机数 r.nextInt(max-min+1)+min
    		for(int i=0;i<10;i++) {
    			System.out.print(r.nextInt(20-15+1)+15+"  ");
    		}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    示例:

    //产生5个[10, 80]之间的随机数,输出产生的数,并求出最大的随机数。
    //记录最大值出现的下标(第一次循环 ,下标为0,第二次为1....) 
    Random r = new Random();
    //最大值出现的索引下标
    int maxIndex = 0;
    int max = 0;
    int min = 80;
    int sum = 0;
    for(int i=0;i<5;i++) {
        int num = r.nextInt(71)+10;
        System.out.print(num+" ");
        maxIndex = (num>max) ? i : maxIndex;
        max = num>max ? num : max;
        min = num<min ? num : min;
        sum += num;
    }
    System.out.println("最大值是:"+max +" 最小值是:"+min +" 总和:"+sum);
    System.out.println("最大值的索引下标是:"+maxIndex);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    CSS-vmin&vmax单位
    这款比奥维地图还方便的地图软件!轻便好用,功能很强大
    网课搜题公众号 接口查题 查课接口 网课答案题库对接教程
    Springboot多数据源配置详解
    笔试强训第24天--(年终奖 + 迷宫问题)
    唯物辩证法-矛盾论(普遍性+特殊性+斗争性+同一性)
    NAT模式和桥接模式的区别
    如何监控公司电脑上网记录(员工上网行为监控软件有哪些?)
    初刷leetcode题目(3)——数据结构与算法
    java基础巩固10
  • 原文地址:https://blog.csdn.net/qq_64505944/article/details/134559815