Java学习笔记day2--分支结构

/*分支结构if-else    switch case
if-else:条件判断结构
三种结构:
    1.if(条件表达式){
    }
    
    2.if(条件表达式){
    }else{
    }
    
    3.if(条件表达式){
    }else if(条件表达式){
    }else if(条件表达式){
    }……
    else{
    }
//举例if-else
        int heartBeats = 79;
        if(heartBeats<60 || heartBeats>100) {
            System.out.println("需要做进一步检查。");
        //举例2
        }
        int age=23;
        if(age<18) {
            System.out.println("你还可以多看看动画片");
        }else{
            System.out.println("你可以看成人de电影了");
        }
        // 举例3 多选一
        int myAge=22;
        if(myAge<=0)
            System.out.println("请输入正确的年龄");
        else if(myAge<18)
                System.out.println("青少年时期");
        else if(myAge<35)
            System.out.println("青壮年时期");
        else if(myAge<60)
            System.out.println("中年时期");
        else
            System.out.println("退休快乐");
        
        //练习********************************************************************(复习题)
        //1.求下列程序输出结果
        boolean x=true;
        boolean y=false;
        short z=40;
        if((z++==40)&&(y=true)) {//true&&true;z=41
            z++;                //z=42
        }
        if((x=false)||(++z==43)){//false||true;z=43
            z++;                //z=44
        }
        System.out.println("z="+z);//z=44
        
        //2.定义三个int型变量并赋值,使用三元运算符或if—else获取这三个数中最大数
        int a0,a1,a2;
        a0=10;
        a1=12;
        a2=78;
        int max=a0;
        //if-else
        if(a0>=a1) {
            if(a0>=a2) {
                System.out.println("最大值是:"+max);
            }
            else {
                max=a2;
                System.out.println("最大值是:"+max);
            }
                
        }else {
            max=a1;
            if(a1>=a2)
                System.out.println("最大值是:"+max);
            else {
                max=a2;
                System.out.println("最大值是:"+max);
            }
        }
        //三元运算符
        int max1=(a0>=a1)?a0:a1;
        int max2=(max1>=a2)?max1:a2;
        System.out.println("最大值是:"+max2);
        
        //3.编写程序,声明2个double变量并赋值,判断第一个数大于10.0且第二个数小于20.0时,打印两数之和,否则,打印两个数乘积
        double d1=19.2;
        double d2=34.1;
        if((d1>10.0)&&(d2<20.0))
            System.out.println(d1+d2);
        else
            System.out.println(d1*d2);
        
        //4.交换两个变量值的代码实现
        int b1=10;
        int b2=24;
        int temp=b1;
        b1=b2;
        b2=temp;
        System.out.println("b1="+b1+",b2="+b2);
        //练习结束**************************************************************************************
        
        /*
         如何从键盘获取不同类型的变量?-->使用scanner类
         具体实现步骤:
             1.导包:import java,utilScanner;
             2.Scanner的实例化;
             3.调用Scanner类的相关方法,以获取指定类型的变量。
         注意:需要根据相应的方法输入指定类型的值,如果输入的类型和要求的类型不匹配,将会报异常InputMisNatchException
         导致程序终止。
         */
        //Scanner的实例化
        Scanner scan=new Scanner(System.in);
        
        //调用Scanner类的相关方法整数、字符串、浮点数、布尔型、字符型++++++++++++++++++++++++++++++++
        System.out.println("请输入一个数字");
        int num=scan.nextInt();
        System.out.println(num);
        
        System.out.println("请输入你的姓名:");
        String name=scan.next();
        System.out.println("你的名字是:"+name);
        
        System.out.println("请输入你的芳龄:");
        int ages=scan.nextInt();
        System.out.println("你的名字是:"+name);
        
        System.out.println("请输入你的体重:");
        double weight=scan.nextDouble();
        System.out.println("你的体重是:"+weight);
        
        System.out.println("你是否相中我了:");
        boolean isLove=scan.nextBoolean();
        System.out.println(isLove);
        
        //对于char型的获取:Scanner没有提供相关方法,只能获取一个字符串
        System.out.println("请输入您的性别:");
        String gender=scan.next();
        char genderChar=gender.charAt(0);//获取gender字符串的第一个字符
        System.out.println(genderChar);
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        
        
    }
    /*练习题1
         岳小胖参加Java考试,他和父亲岳不群达成承诺:
         如果:成绩为一百分,奖励一辆BMW;
         成绩为(80,99],奖励一台iPhone xs max;
         当成绩为[60,80],奖励一个iPad;
         其他时,什么奖励也没有;
         请从键盘上输入岳小胖的期末成绩,并加以判断
         */
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入岳小胖的期末考试成绩:(0~100)");
        int score=scan.nextInt();
        //如下if-else结构不可改变顺序,否则编译能通过但是无法正确运行
        if(score<60)
            System.out.println("什么奖励也没有。");
        else if(score<=80)
            System.out.println("奖励一个iPad。");
        else if(score<=99)
            System.out.println("奖励一台iPhone xs max。");
        else
            System.out.println("奖励一台BMW");
        //针对条件表达式,如果多个条件表达式之间是互斥关系(即没有交集),则哪个判断和执行语句声明在前面还是后面都无所谓,不影响判断结果;
        //当多个条件判断语句之间有交集时,需要根据实际情况,考虑清楚将哪个结构放在前面。
        
        
        
        /*练习题2
         编写程序,由键盘输入三个整数分别存入变量num1、num2、num3
         对它们进行排序(使用if-else),并且从小到大输出。
         */
        System.out.println("请输入三个整数:");
        int num1=scan.nextInt();
        int num2=scan.nextInt();
        int num3=scan.nextInt();
        //我的想法是冒泡排序,借助中间变量temp实现num1、num2、num3之间的交换,使得num1、num2、num3变成从小到大的序列
        int temp=num1;
        if(num1<num2) {
            temp=num2;
            if(num2<num3) {
                System.out.println(num1+","+num2+","+num3);
            }else {
                num2=num3;
                num3=temp;
                if(num1<num2)
                    System.out.println(num1+","+num2+","+num3);
                else {
                    temp=num1;
                    num1=num2;
                    num2=temp;
                    System.out.println(num1+","+num2+","+num3);
                }
                
            }
        }else {
            num1=num2;
            num2=temp;
            if(num2<num3)
                System.out.println(num1+","+num2+","+num3);
            else {
                temp=num2;
                num2=num3;
                num3=temp;
                if(num1<num2)
                    System.out.println(num1+","+num2+","+num3);
                else {
                    temp=num1;
                    num1=num2;
                    num2=temp;
                    System.out.println(num1+","+num2+","+num3);
                }
            }
        }
        //笔试题***************************************************************************
        //1.对下列代码,若有输出,指出输出结果
        int x=4;
        int y=1;
        if(x>2) {            
            if(y>2)             //无大括号,以下一行为if内执行语句(笔试题喜欢删去大括号误导人)
                System.out.println(x+y);
                System.out.println("atguigu");//这一句是x>2的执行语句,
            
        }else     //就近配对原则
            System.out.println("x is"+x);
        //程序输出:atguigu
        
        //2.如果改写成if(b=false)能编译通过吗?如果能,结果是什么?
        boolean b=true;
        if(b==false)            //如果改成b=false,这句不执行
            System.out.println("a");
        else if(b)                        //b==false,所以这句也不执行
            System.out.println("b");
        else if(!b)
            System.out.println("c");    //!b==true,执行,输出c
        else
            System.out.println("d");
        
        /*
         3.我家狗五岁了,5岁的狗相当于人类多大呢?其实,狗狗前两年每一年相当于人类的10.5年,之后每增加一年就增加四岁。
         编写一个程序,获取用户输入的狗的年龄,通过此程序显示其相当于人类的年龄。
         如果用户输入负数,请显示一个提示信息
         */
        System.out.println("请输入你家狗狗的年龄:");
        int dogAge=scan.nextInt();
        if(dogAge<0)
            System.out.println("你家狗狗还没出生呢");
        else {
            if(dogAge<=2) {
                System.out.println("你家狗狗的年龄相当于人类的"+dogAge*10.5+"");
            }else {
                System.out.println("你家狗狗的年龄相当于人类的"+(2*10.5+4*(dogAge-2))+"");
            }
        }
        
        /*
         4.假设你想开发一个玩彩票的游戏,程序随机产生一个两位数的彩票,提示用户输入一个两位数,按照以下规则判断用户能否获奖:
         1)如果用户输入匹配彩票的实际顺序,奖励10000美元;
         2)如果用户输入数字匹配但是顺序不一样,奖励3000美元;
         3)如果用户输入的一个数字满足顺序情况下匹配彩票的一个数,奖励1000美元;
         4)如果用户输入一个数满足非顺序下匹配彩票的一个数,奖励600美元;
         5)用户输入没有匹配任何一个数字,彩票作废。
         */
        int lotteryTicket;
        lotteryTicket=(int)(Math.random()*90+10);//random产生一个double类型的数,值域为[0.0,1.0)
        int lotteryTicketG=lotteryTicket%10;
        int lotteryTicketS=lotteryTicket/10;
        System.out.println("请输入一个两位数:");
        int userNum=scan.nextInt();
        int userNumG=userNum%10;
        int userNumS=userNum/10;
        if(userNumG==lotteryTicketG && userNumS==lotteryTicketS) {
            System.out.println("恭喜你,获得10000美元的奖励!");
        }
        else if(userNumG==lotteryTicketG || userNumS==lotteryTicketS) {
            System.out.println("恭喜你,获得1000美元的奖励!");
        }
        else if(userNumG==lotteryTicketS && userNumS==lotteryTicketG) {
            System.out.println("恭喜你,获得3000美元的奖励!");
        }
        else if(userNumG==lotteryTicketS || userNumS==lotteryTicketG) {
            System.out.println("恭喜你,获得600美元的奖励!");
        }else
            System.out.println("很遗憾,你没有获奖!");
        System.out.println("彩票数字是:"+lotteryTicket+",你的输入是:"+userNum);
        
        /*
         练习5:大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
         高:180cm以上;富:财富一千万以上;帅:是。
         如果三个条件同时满足,则:“我一定要嫁给他!!!”
         如果三个条件有为真的情况,则;“嫁吧,比上不足,比下有余。”
         如果三个条件都不满足,则:“不嫁!”
         */
        System.out.println("请输入你的身高:cm");
        double height=scan.nextDouble();
        System.out.println("请输入你的财富总值:元");
        int money=scan.nextInt();
        System.out.println("你长得帅不帅:(帅->true,不帅->false)");
        boolean face=scan.nextBoolean();
        if(height>=180 && money>=10000000 && face==true ) {
            System.out.println("我一定要嫁给他!!!");
        }else if (height>=180 || money>=10000000 || face==true) {
            System.out.println("嫁吧,比上不足,比下有余。");
        }else
            System.out.println("不嫁!");
        //注意条件表达式直接的包含关系。这是if-else语句的顺序的关键
        //练习结束*********************************************************************************

 

posted @ 2022-11-01 18:53  乐美  阅读(41)  评论(0)    收藏  举报