zoukankan      html  css  js  c++  java
  • Java-笔记4

        /*
        如何从键盘获取不同类型的变量:需要使用Scanner类
    
        具体实现步骤:
        1.导包:import java.util.Scanner;
        2.Scanner的实例化:Scanner scan = new Scanner(System.in);
        3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
    
        注意:
        需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException
        导致程序终止。
        */
        //1.导包:import java.util.Scanner;
        import java.util.Scanner;
    
        class ScannerTest{
            
            public static void main(String[] args){
                //2.Scanner的实例化
                Scanner scan = new Scanner(System.in);
                
                //3.调用Scanner类的相关方法
                System.out.println("请输入你的姓名:");
                String name = scan.next();
                System.out.println(name);
    
                System.out.println("请输入你的芳龄:");
                int age = scan.nextInt();
                System.out.println(age);
    
                System.out.println("请输入你的体重:");
                double weight = scan.nextDouble();
                System.out.println(weight);
    
                System.out.println("你是否相中我了呢?(true/false)");
                boolean isLove = scan.nextBoolean();
                System.out.println(isLove);
    
                //对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串
                System.out.println("请输入你的性别:(男/女)");
                String gender = scan.next();//"男"
                char genderChar = gender.charAt(0);//获取索引为0位置上的字符
                System.out.println(genderChar);
                
    
            }
    
        }
    /*
    岳小鹏参加Java考试,他和父亲岳不群达成承诺:
    如果:
    成绩为100分时,奖励一辆BMW;
    成绩为(80,99]时,奖励一台iphone xs max;
    当成绩为[60,80]时,奖励一个 iPad;
    其它时,什么奖励也没有。
    请从键盘输入岳小鹏的期末成绩,并加以判断
    
    说明:
    1. else 结构是可选的。
    2. 针对于条件表达式:
       > 如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
       > 如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
       > 如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行了。
    */
    
    import java.util.Scanner;
    class IfTest {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            
            System.out.println("请输入岳小鹏期末成绩:(0-100)");
            int score = scan.nextInt();
    
            if(score == 100){
                System.out.println("奖励一辆BMW");//be my wife!  BMW <---> MSN
            }else if(score > 80 &&  score <= 99){
                System.out.println("奖励一台iphone xs max");
            }else if(score >= 60 && score <= 80){
                System.out.println("奖励一个 iPad");
            }else{
                System.out.println("什么奖励也没有");
            }
        }
    }
    /*
    编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
    对它们进行排序(使用 if-else if-else),并且从小到大输出。
    
    说明:
    1. if-else结构是可以相互嵌套的。
    2. 如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略的。但是,不建议大家省略。
    */
    import java.util.Scanner;
    class IfTest2 {
        public static void main(String[] args) {
            
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入第一个整数:");
            int num1 = scanner.nextInt();
            System.out.println("请输入第二个整数:");
            int num2 = scanner.nextInt();
            System.out.println("请输入第三个整数:");
            int num3 = scanner.nextInt();
    
            if(num1 >= num2){
                if(num3 >= num1)
                    System.out.println(num2 + "," + num1 + "," + num3);
                else if(num3 <= num2)
                    System.out.println(num3 + "," + num2 + "," + num1);
                else
                    System.out.println(num2 + "," + num3 + "," + num1);
                
            
            }else{
                if(num3 >= num2)
                    System.out.println(num1 + "," + num2 + "," + num3);
                else if(num3 <= num1)
                    System.out.println(num3 + "," + num1 + "," + num2);
                else
                    System.out.println(num1 + "," + num3 + "," + num2);
                
            }
    
        }
    }
    class IfExer {
        public static void main(String[] args) {
            int x = 4;
            int y = 1;
            if (x > 2) 
                if (y > 2) 
                    System.out.println(x + y);
                    //System.out.println("atguigu");
                else //就近原则
                    System.out.println("x is " + x);
            
    
            //课后练习3:测算狗的年龄
            int dogAge = 6;
            if(dogAge >= 0 && dogAge <= 2){
                System.out.println("相当于人的年龄:" + dogAge * 10.5);
            }else if( dogAge > 2){
                System.out.println("相当于人的年龄:" + (2 * 10.5 + (dogAge - 2) * 4));
            }else{
                System.out.println("狗狗还没出生呢!");
            }
    
            //课后练习4:如何获取一个随机数:10 - 99
            int value = (int)(Math.random() * 90 + 10);// [0.0,1.0) --> [0.0,90.0) --->[10.0, 100.0) -->[10,99]
            System.out.println(value);
            //公式:[a,b]  :  (int)(Math.random() * (b - a + 1) )+ a
        }
    }
    /*
    大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
    高:180cm以上;富:财富1千万以上;帅:是。
    如果这三个条件同时满足,则:“我一定要嫁给他!!!”
    如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
    如果三个条件都不满足,则:“不嫁!”
    
    */
    
    import java.util.Scanner;
    
    class IfExer1 {
        public static void main(String[] args) {
            
            Scanner scan = new Scanner(System.in);
            
            System.out.println("请输入你的身高:(cm)");
            int height = scan.nextInt();
            System.out.println("请输入你的财富:(千万)");
            double wealth = scan.nextDouble();
    
            /*
            方式一:
            System.out.println("请输入你是否帅:(true/false)");
            boolean isHandsome = scan.nextBoolean();
    
            if(height >= 180 && wealth >= 1 && isHandsome){
                System.out.println("我一定要嫁给他!!!");
            }else if(height >= 180 || wealth >= 1 || isHandsome){
                System.out.println("嫁吧,比上不足,比下有余。");
            }else{
                System.out.println("不嫁!");
            }
            */
    
            //方式二:
            System.out.println("请输入你是否帅:(是/否)");
            String isHandsome = scan.next();
    
            
            if(height >= 180 && wealth >= 1 && isHandsome.equals("是")){
                System.out.println("我一定要嫁给他!!!");
            }else if(height >= 180 || wealth >= 1 || isHandsome.equals("是")){
                System.out.println("嫁吧,比上不足,比下有余。");
            }else{
                System.out.println("不嫁!");
            }
        }
    }

    /*
    分支结构之二:switch-case
    
    1.格式
    switch(表达式){
    case 常量1:
        执行语句1;
        //break;
    
    case 常量2:
        执行语句2;
        //break;
    
    ...
    
    default:
        执行语句n;
        //break;
    
    }
    
    2.说明:
    ① 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。
      当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构
      末尾结束为止。
    
    ② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
    
    ③ switch结构中的表达式,只能是如下的6种数据类型之一:
       byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
    
    ④ case 之后只能声明常量。不能声明范围。
    
    ⑤ break关键字是可选的。
    
    ⑥ default:相当于if-else结构中的else.  
      default结构是可选的,而且位置是灵活的。
    */
    
    class SwitchCaseTest {
        public static void main(String[] args) {
            
            int number = 5;
            switch(number){
            
            case 0:
                System.out.println("zero");
                break;
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
            default:
                System.out.println("other");
                //break;
            }
    
    
            String season = "summer";
            switch (season) {
            case "spring":
                System.out.println("春暖花开");
                break;
            case "summer":
                System.out.println("夏日炎炎");
                break;
            case "autumn":
                System.out.println("秋高气爽");
                break;
            case "winter":
                System.out.println("冬雪皑皑");
                break;
            default:
                System.out.println("季节输入有误");
                break;
            }
    
    
    
            //**************如下的两种情况都编译不通过*********************
            //情况一
            /*
            boolean isHandsome = true;
            switch(isHandsome){
            
            case true:
                System.out.println("我好帅啊~~~");
                break;
            case false:
                System.out.println("我好丑啊~~~");
                break;
            default:
                System.out.println("输入有误~~~");
            }
            */
            //情况二
            /*
            int age = 10;
            switch(age){
            case age > 18:
                System.out.println("成年了");
                break;
            default:
                System.out.println("未成年");
            }
            */
        }
    }
                        例 题
    1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输
    出 “other”。
    提示:String word = scan.next(); char c = word.charAt(0); switch(c){}
    2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
    3.根据用于指定月份,打印该月份所属的季节。
    3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
    4. 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序
    输出输入的日期为2019年的第几天。
    /*
    例题:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
    
    说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。
    */
    class SwitchCaseTest1 {
        public static void main(String[] args) {
            
            /*
            int score = 78;
            switch(score){
            case 0:
    
            case 1:
    
            case 2:
    
                ...
            case 100:
            
            }
            */
    
            /*
            int score = 78;
            if(score >= 60){
            
            }else{
            
            }
            */
            
            int score = 78;
            switch(score / 10){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("不及格");
                break;
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
                System.out.println("及格");
                break;
    
            }
            
            //更优的解决方案:
            switch(score / 60){
            case 0:
                System.out.println("不及格");
                break;
            case 1:
                System.out.println("及格");
                break;
            }
        
        }
    }
    /*
    编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。
    
    2  15:  31 + 15
    
    5 7: 31 + 28 + 31 + 30 + 7 
    
    ....
    
    说明:break在switch-case中是可选的
    */
    import java.util.Scanner;
    class SwitchCaseTest2 {
        public static void main(String[] args) {
            
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入2019年的month:");
            int month = scan.nextInt();
            System.out.println("请输入2019年的day:");
            int day = scan.nextInt();
    
    
            //定义一个变量来保存总天数
            int sumDays = 0;
    
            //方式一:冗余
            /*
            
            if(month == 1){
                sumDays = day;
            }else if(month == 2){
                sumDays = 31 + day;
            }else if(month == 3){
                sumDays = 31 + 28 + day;
            }else if(month == 4){
                sumDays = 31 + 28 + 31 + day;
            }
            //...
            else{//month == 12
                //sumDays = ..... + day;
            }
    
            */
    
            //方式二:冗余
            /*
            switch(month){
            case 1:
                sumDays = day;
                break;
            case 2:
                sumDays = 31 + day;
                break;
            case 3:
                sumDays = 31 + 28 + day;
                break;
            ...
            }
            */
    
            switch(month){
            case 12:
                sumDays += 30;
            case 11:
                sumDays += 31;
            case 10:
                sumDays += 30;
            case 9:
                sumDays += 31;
            case 8:
                sumDays += 31;
            case 7:
                sumDays += 30;
            case 6:
                sumDays += 31;
            case 5:
                sumDays += 30;
            case 4:
                sumDays += 31;
            case 3:
                sumDays += 28;
            case 2:
                sumDays += 31;
            case 1:
                sumDays += day;
            }
    
            System.out.println("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天");
        }
    }
    /*
    从键盘分别输入年、月、日,判断这一天是当年的第几天
     
       注:判断一年是否是闰年的标准:
           1)可以被4整除,但不可被100整除
        或
           2)可以被400整除
    
    
    说明:
    1. 凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
    2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),
      又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。
    
    */
    import java.util.Scanner;
    class SwitchCaseExer {
        public static void main(String[] args) {
            
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入year:");
            int year = scan.nextInt();
            System.out.println("请输入month:");
            int month = scan.nextInt();
            System.out.println("请输入day:");
            int day = scan.nextInt();
    
    
            //定义一个变量来保存总天数
            int sumDays = 0;
    
            switch(month){
            case 12:
                sumDays += 30;
            case 11:
                sumDays += 31;
            case 10:
                sumDays += 30;
            case 9:
                sumDays += 31;
            case 8:
                sumDays += 31;
            case 7:
                sumDays += 30;
            case 6:
                sumDays += 31;
            case 5:
                sumDays += 30;
            case 4:
                sumDays += 31;
            case 3:
                //sumDays += 28;
                //判断year是否是闰年
                if((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0){
                    sumDays += 29;
                }else{
                    sumDays += 28;
                }
    
            case 2:
                sumDays += 31;
            case 1:
                sumDays += day;
            }
    
            System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDays + "天");
        }
    }

     

     

    /*
    For循环结构的使用
    一、循环结构的4个要素
    ① 初始化条件
    ② 循环条件  --->是boolean类型
    ③ 循环体
    ④ 迭代条件
    
    二、for循环的结构
    
    for(①;②;④){
        ③
    }
    
    执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②
    
    */
    class ForTest {
        public static void main(String[] args) {
    
            /*
            System.out.println("Hello World!");
            System.out.println("Hello World!");
            System.out.println("Hello World!");
            System.out.println("Hello World!");
            System.out.println("Hello World!");
            */
    
            for(int i = 1;i <= 5;i++){//i:1,2,3,4,5
                System.out.println("Hello World!");
            }
            //i:在for循环内有效。出了for循环就失效了。
            //System.out.println(i);
            
            //练习:
            int num = 1;
            for(System.out.print('a');num <= 3;System.out.print('c'),num++){
                System.out.print('b');
            }
            //输出结果:abcbcbc
    
            System.out.println();
    
            //例题:遍历100以内的偶数,输出所有偶数的和,输出偶数的个数
            int sum = 0;//记录所有偶数的和
            int count = 0;//记录偶数的个数
            for(int i = 1;i <= 100;i++){
                
                if(i % 2 == 0){
                    System.out.println(i);
                    sum += i;
                    count++;
                }
                //System.out.println("总和为:" + sum);
            }
    
            System.out.println("总和为:" + sum);
            System.out.println("个数为:" + count);
    
        }
    }
    /*
    编写程序从1循环到150,并在每行打印一个值,
    另外在每个3的倍数行上打印出“foo”,
    在每个5的倍数行上打印“biz”,
    在每个7的倍数行上打印输出“baz”。
    
    */
    
    class ForTest1 {
        public static void main(String[] args) {
            
            for(int i = 1;i <= 150;i++){
                
                System.out.print(i + "  ");
    
                if(i % 3 == 0){
                    System.out.print("foo ");
                }
    
                if(i % 5 == 0){
                    System.out.print("biz ");
                }
    
                if(i % 7 == 0){
                    System.out.print("baz ");
                }
    
                //换行
                System.out.println();
    
            }
    
        }
    }
  • 相关阅读:
    wget(转)
    852. Peak Index in a Mountain Array
    617. Merge Two Binary Trees
    814. Binary Tree Pruning
    657. Judge Route Circle
    861. Score After Flipping Matrix
    832. Flipping an Image
    461. Hamming Distance
    654. Maximum Binary Tree
    804. Unique Morse Code Words
  • 原文地址:https://www.cnblogs.com/LXL616/p/10805957.html
Copyright © 2011-2022 走看看