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();

        }

    }
}

 

转载于:https://www.cnblogs.com/LXL616/p/10805957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值