第05章 程序控制结构(P104 - P155)

  • 学习日期:   12月   9 日

  • 知识导图:


 

  • 学习内容:


 

 多分支结构

 

 多分支结构特别说明:

1.多分支可以没有else ,如果所有的条件表达式都不成立,则一个执行入口都没有

2.如果有else,如果所有的条件表达式都不成立,则默认执行else代码块

嵌套分支:
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。老师建议: 不要超过 3 层 (可读性不好)

接收字符方法: char gender = scanner.next().charAt(0)

 switch

 switch流程控制

 case后面的必须是常量或者是常量表达式

switch 和 if 的比较
1) 如果 判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可
以使用,建议使用 swtich 语句。
2) 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广

for循环控制

注意事项和细节说明
ForDetail.java
1) 循环条件是返回一个布尔值的表达式
2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代
语句,中间用逗号隔开。
4) 使用内存分析法,老师分析输出下面代码输出什么?

while循环条件判断

流程图结构

while循环流程图

 

while练习

package review_;
//while循环的实例
//输出是10句韩顺平教育

public class while01 {
    public static void main(String[] args) {
        int i = 1; //循环变量初始化
        while(i <= 10){//循环条件
            System.out.println("你好,韩顺平教育"+i);
            i++;
    }
        System.out.println("退出了while循环继续执行");
    }
}

 do...while循环

循环结构

 do..while循环注意事项:

1.循环条件的返回值是一个布尔类型的表达式

2.do...while循环是先执行,在判断,因此,它至少执行一次。

多重循环

1) 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while 均可以作为外层循环和内层循环。
【建议一般使用两层,最多不要超过 3 层, 否则,代码的可读性很差】
2) 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时,才会完全跳出内
层循环,才可结束外层的当次循环,开始下一次的循环[听不懂,走案例]。
3) 设外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次

 生产随机数:(int)(Math.random()*100)

 break

 

 countine

1) continue  语句用于结束本次循环, 继续执行下一次循环。
2) continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的
使用的规则一样.

return

 

  • 题目练习:


package review_;

import java.util.Scanner;
//问题:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁
//则输出“你的年龄大于18岁,要对自己的行为负责,送入监狱”
//思路分析
//1.接受输入的年龄,应该定义一个Scanner对象
//2.把年龄保存到一个变量 int age
//3.使用 if 判断 ,输出对应的信息


public class if01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的年龄:");
        int age = scanner.nextInt();
        if(age>18){
            System.out.println("你的年龄已经成年,送入监狱");
        }
        System.out.println("程序继续执行。。。");
    }
}

双分支结构if --else

package review_;

public class ifelse {
    public static void main(String[] args) {
        int x = 7;
        int y = 4;
        if(x>5){
            if(y>5){
                System.out.println(x+y);

            }
            System.out.println("韩顺平教育");
        }else {
            System.out.println("x is"+x);
        }
    }
}
package review_;

import java.util.Scanner;

public class ifelse {
    public static void main(String[] args) {
        double d1 = 33.5;
        double d2 = 2.6;

        if(d1 > 10.0 && d2 < 20.0) {
            System.out.println("两个数的和=" + (d1 + d2));
        }
        //课后练习==>>定义两个变量int , 判断两者的和
        //是否能被3又能被5整除,打印提示信息
        //思路分析
        //1、定义两个变量int num1,num2
        //2.定义一个变量 int sum = num1 + num2;
        //3.sum % 3, 5 后 等于0 可以说明可以整除
        //4.使用 if - else 来提示对应信息
        int num1 = 10;
        int num2 = 1;

        int num = num1 +num2;
        if (num%3 == 0 && num % 5 == 0){
            System.out.println("可以被3和5整除。");

        }else {
            System.out.println("不可以被整除。");
        }
        //判断一个年份是否是闰年,条件是符合下面的二者之一:
        //1.年份能被4整除,但是不能被100整除:
        //2.能被400整除
        //思路分析
        //1.定义 int year 保存年
        //2. 年份能被4整除,但是不能被100整除 =>>year %4 == 0 && year % 100 != 0;
        //3.能被400整除,=>> year % 400 == 0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的年份:");
        int year = scanner.nextInt();
        if(year %4 == 0 && year % 100 != 0 || year%400 == 0 ){
            System.out.println(year+"是闰年。");
        }else {
            System.out.println(year+"不是闰年");
        }

    }
}

多分支结构练习:

package review_;

import java.util.Scanner;

public class if03 {
//    案例演示 1
//    请大家看个案例[If03.java]:
//    输入保国同志的芝麻信用分:
//    如果:
//            1) 信用分为 100 分时,输出 信用极好;
//            2) 信用分为(80,99]时,输出 信用优秀;
//            3) 信用分为[60,80]时,输出 信用一般;
//            4) 其它情况 ,输出 信用 不及格
//5) 请从键盘输入保国的芝麻信用分,并加以判断
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入你的信用分数:");
    double grade = scanner.nextDouble();
    if(grade>=1 && grade<= 100){
        if(grade ==100){
            System.out.println("信用极好");
        }else if( grade>80 && grade <= 99){
            System.out.println("信用优秀");
        }else if(grade >60 && grade<= 80){
            System.out.println("信用一般");
        }else {
            System.out.println("信用不及格");
        }
    }else {
        System.out.println("你输入的信用成绩有误,请重新输入:");
    }
    }



}

嵌套分支

package review_;

import java.util.Scanner;

public class switchexercise {
    public static void main(String[] args) {
//        使用switch 把小写类型的char型转为大写(键盘输入)。只转换a->A,b->B,c,d,e,其他
//                的输出”other“
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要转换的字符:");
        char c1 = scanner.next().charAt(0);
        switch (c1) {
            case 'a':
                System.out.println("A");
                break;
            case 'b':
                System.out.println("B");
                break;
            case 'c':
                System.out.println("C");
                break;
            case 'd':
                System.out.println("D");
                break;
            default:
                System.out.println("你的输入有误");
        }
//对学生成绩大于60分的,输出“合格”。低于60分的
//        输出“不合格”,(注:输入的成绩不能大于100,提示 成绩、60
//                思路分析
//                1.这道题,可以是使用 分支来完成,但是要求使用switch
//                2.这里我们需要进行一个转换,编程思路:
//                 如果成绩在[60,100],(int )(成绩/60) = 1
//                如果成绩在[0,60],(int )(成绩/60) = 0
        System.out.println("请输入你的成绩:");
        double score = scanner.nextDouble();
        switch ((int) (score / 60)) {
            case 0:
                System.out.println("不及格");
                break;
            case 1:
                System.out.println("及格");
                break;
            default:
                System.out.println("你的输入有误");
        }

        //根据用于指定的月份
        //打印该月份所属的季节
        //3,4,5 春季 6,7,8,夏季 9,10,11,秋季 12,1,2,冬季
        System.out.println("请输入你的月份:");
        int d1 = scanner.nextInt();
        switch (d1) {
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;
            default:
                System.out.println("你的月份输入有误");
        }


    }
}

do...while循环练习

package review_;

import java.util.Scanner;

public class dowhile {
    public static void main(String[] args) {
        //打印1 - 100
        //计算1 - 100 的和
        //统计1 - 200 之间能够被5整除但是不能够被3整除的数
        //如果李三不还钱,则老韩将会一直使出五连鞭,直到李三说还钱为止
        //[system.out.println("老韩问:还钱吗?y/n")do..while
        int i  = 1;
        int count = 0 ;
        do {
            if (i % 5 == 0 && i % 3 == 0 ){
                System.out.println("i = " + i);
                count++;

            }
            i++;
        }while (i<= 200);
        char answer;
        do {
            Scanner scanner = new Scanner(System.in);

            System.out.println("老韩使出五连鞭,问还钱吗?y/n");
            answer = scanner.next().charAt(0);

        }while (answer != 'y');

        System.out.println("已经还钱,退出程序");
    }
}

打印乘法口诀:

package review_;

import java.util.Scanner;

//打印乘法口诀
public class dowhile {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + j * i + "\t");
            }
            System.out.println();
        }
        //输出水仙花数
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个三位数字:");
        int num = scanner.nextInt();
        int a = num % 10;
        int b = num / 10 % 10;
        int c = num / 100;
        if (a * a * a + b * b * b + c * c * c == num) {
            System.out.println(num + "是水仙花数字");
        } else {
            System.out.println(num + "不是水仙花数");
        }
    }
}

打印金字塔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值