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();
    
            }
    
        }
    }
  • 相关阅读:
    jstl 部分标签
    Maven pom.xml 元素配置说明(一)
    spring 参数绑定
    mysql 索引
    ArrayList和HashSet的Contains()方法(转)
    每日记载内容总结44
    剑指offer42:不用加减乘除做加法
    动态规划常见题型
    华为机试-统计每个月兔子的总数
    华为机试-字符串合并处理
  • 原文地址:https://www.cnblogs.com/LXL616/p/10805957.html
Copyright © 2011-2022 走看看