8.1总结

本文详细介绍了Java中的循环结构,包括for、while和do-while循环,强调了break和continue语句的作用。同时,深入讲解了switch语句的使用,通过实例展示了如何根据输入判断星期。此外,还探讨了求和思想在循环中的应用,并解释了水仙花数的概念及求解方法。

8.1总结

1.循环结构语句

for :使用最多: 普通for循环
求和思想
统计思想
什么是水仙花数 :三位数,每个位上的数据的立方相加的,是这个数据本身
157
while:其次才是这个while
do-while
引入两个死循环 :一定要出口条件
for(;;){
循环体;
}
while(true){ //使用多一些
...
}

2.跳转控制语句(重点)

break ; looper循环或者switch中用 (中断,结束...)
continue:继续 (循环中用,结束当期循环之后,立即进入下一次循环了)
return ; // 结束方法用的 (很少单独使用, 引入 --Java中的方法(函数))

3.switch语句

// 需求:
/* 键盘录入一个值,判断星期
1,星期一
2,星期二
3,星期三,
4,星期四
5,星期五
6,星期六
7,星期日
*/
import java.util.Scanner;
   格式: switch(表达式或者某个变量值)
        {
        case1:
        语句1;
        break ;
        case2:
        语句2:
        break ;
        ...
default:
        语句n;
        break ;
        }
    执行流程:
        switch接收结果,
        1)接收的结果和case后面的值1进行对比,成立,执行语句1,break 结束语句;
        2)1switch接收的结果不匹配,和值2进行比较,成立,执行语句2, break,结束语句;*
        3)...
        如果上面case都不匹配,执行default语句,语句n,break ,结束..
public class SwicthDemo {
    public static void main(String[] args) {
//创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;
//提示并录入数据
        System.out.println("请输入一个星期(1-7的数据): ") ;
        int week = sc.nextInt() ;
        switch (week){
            case 1:
                System.out.println("星期一") ;
                break ;
            case 2:
                System.out.println("星期二") ;
                break ;
            case 3:
                System.out.println("星期三") ;
                break ;
            case 4:
                System.out.println("星期四") ;
                break ;
            case 5:
                System.out.println("星期五") ;
                break ;
            case 6:
                System.out.println("星期六") ;
                break ;
            case 7:
                System.out.println("星期日") ;
                break ;
            default :
                System.out.println("非法数据") ;
                break ;
        }
    }
}

4.switch语句之注意事项

switch语句中的注意事项也是 (考点)
	1)关于switch中的case语句后面只能常量,不能是变量 (体现Java是一种强类型语言)
        ----前端的javascript:它里面的swtich的case是可以是变量,可以是个常量
	2)在书写switch语句的标准结构,不忘了break,如果语句中忘了书写break,会出现一个现象:case穿透!
        在有的需求里面利用 case穿透 来完成一些需求;
	3)关于switch语句的结束条件
        a)要么遇见break结束
        b)程序默认执行到末尾
	4)关于default语句可以在switch语句中的任何位置,不影响语句的执行流程;
        不管在任何位置,只要case语句都不匹配,执行default;
        如果default语句的末尾,break可以省略;

5.循环结构语句之for

/*
需求:需要在控制台输出 10次 "我爱高圆圆"
        
         这一个代码:10句话放在程序中
         1)阅读性差
         2)代码的冗余度非常高(重复性太大)
        
         这个时候,计算机语言提供了流程控制语句之循环语句
         //明确循环次数优先的for循环
        
         格式
         for(初始化语句;条件表达式;控制体语句或者步长语句){
         循环体语句;
         }
        
         执行流程
         1) 初始化语句:给变量赋值 (只执行一次)
         2)然后执行条件表达式,看其是否成立,如果成立,执行的是循环体语句
         	------>再次回到控制体语句或者步长语句
         	--->变量自增或者自减
        
         3)再次执行条件表达式,是否成立,成立,继续循环体语句
         	---->再次回到控制体语句或者步长语句
         	---->变量自增或者自减
         ....
         4)一直执行到条件表达式不成立,for循环结束;
        */
public class Demo {
    public static void main(String[] args) {
//最原始的做法:输出10句话
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("我爱高圆圆") ;
        System.out.println("------------------------------------------------
                ");
//10次 "我爱高圆圆“
/**
 * for(初始化语句;条件表达式;控制体语句或者步长语句){
 * 循环体语句;
 * }
 */
        for(int x = 1 ; x <=10;x++){ //x=1,x<=10, x=2,2<=10,x = 3 ,
            3<=10,x=10,x<=10,x=11,11<10
            System.out.println("我爱高圆圆") ;//1,2,3....... 10
        }
    }
}

6.循环求和思想

/*
循环求和思想
   需求:
         1)在控制台输出1-10的每一个数据
        
         2)循环的求和思想
         在控制台输出1-10的之间的所有的数据之和
         1+2+3+4+5+6+7+8+9+10 :原始做法比较麻烦,随着数据规模越来越大,这种做法不合适;
        
         求和思想:
         将上面的这种格式变形一下:
         定义一个结果变量: 从0开始 sum这个变量
         0 + 1 = 1 ;
         1 + 2 = 3 ;
         3 + 3 = 6 ;
         6 + 4 = 10 ;
         10 +5 = 15 ;
         15 + 6 = 21 ;
         21 + 7 =28 ; 
         ....
        
         两个加数:
         前面的这个加数:就是求和结果变量sum,从0开始后面的这个加数:就是1-10的数据;
        
         使用步骤:
         1)定义一个最终结果变量sum,从0开始记录
         2)使用for(初始化语句;条件表达式;控制体语句){
         //循环体语句
         //先取出来每一个数据
         使用结果变量就是上面的数据求和,然后再赋值给最终结果变量;
         }
         3)输出sum即可
        */
public class ForDemo {
    public static void main(String[] args) {
//1)在控制台输出1-10的每一个数据
//原始的做法
        System.out.println(1) ;
        System.out.println(2) ;
        System.out.println(3) ;
        System.out.println(4) ;
        System.out.println(5) ;
        System.out.println(6) ;
        System.out.println(7) ;
        System.out.println(8) ;
        System.out.println(9) ;
        System.out.println(10) ;
        System.out.println("--------------------------------") ;
//上面的重复度很高,改进
/* for(初始化语句;条件表达式;控制体语句或者步长语句){
循环体语句;
}*/
        for(int i = 1;i<=10 ; i ++){ //x=1,1<10 , i++-->2 <=10
            System.out.println(i) ; //1, 2....
        }
        System.out.println("---------------求和思想的引入------------------")
        ;
// 在控制台输出1-10的之间的所有的数据之和
//原始的做法:
        System.out.println(1+2+3+4+5+6+7+8+9+10) ;
        System.out.println("---------------------------------------------") ;
//定义一个结果变量
        int sum = 0 ;
        for(int x = 1 ; x <=10 ; x ++) {// 1-10之间的数据
//x的取整:1,2....10;
            sum += x ; //sum = sum + x ;
/*
  sum = 0 ;
  x = 1 ; x <=10 ;成立---循环体: sum = sum+x 0 +1 =1 x++
  x = 2 ; 2<=10 ;成立--- 循环体: 1 + 2 = 3 -- sum = 3 ; x ++
  x = 3 ; 3<=10 ; 成立--- 循环体: 3+3 = 6 --- sum= 6; x++
  x=4 .....................
 */
        }
        System.out.println("1-10的数据之和是:"+sum);
    }
}

7.水仙花获取

/*
需求:在控制台输出所有的水仙花数
    水仙花数
       水仙花指的是三位数,而且这个三位数的每一个位上的立方相加就是当期数据本身;
        
         举例:153 = 1 * 1 * 1 + 5*5*5 + 3*3*3
        
         153 % 10 = 3 ;---确定个位的数据
         153 / 10 % 10 = 5 --- 确定十位的数据
         153 /10 /10 %10 = 1 --- 确定百位上的数据
        
     分析:
         1)三位数,明确了范围 100-999---使用for循环 x
         2) 确定每各位的数据本身的值:定义三个变量,分别代表个位,十位,百位数据本身
         int ge = 当前这个数据 % 10 ;
         int shi = 当前这个数据 /10 %10 ;
         int bai = 当前这个数据 /10/10 % 10 ;
         3)for循环中加入逻辑判断
         如果当前x == (ge*ge*ge)+(shi*shi*shi)+(bai*bai*bai),
         满足条件,直接输出x
*/
public class forDemo3 {
    public static void main(String[] args) {
        System.out.println("水仙花数是:");
// 1)三位数,明确了范围 100-999---使用for循环 x
        for (int x = 100; x < 1000; x++) {
//x:100-999的数据
//确定每各位的数据本身的值:
// 定义三个变量,分别代表个位,十位,百位数据本身
            int ge = x % 10; //x=153
            int shi = x / 10 % 10;
            int bai = x / 10 / 10 % 10;
//如果当前x == (ge*ge*ge)+(shi*shi*shi)+(bai*bai*bai),满足条件,
            直接输出x
            if (x == (ge * ge * ge + shi * shi * shi + bai * bai * bai)) {
                System.out.println(x);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值