Day03

作者: 拼搏男孩 | 来源:发表于2019-11-25 08:06 被阅读0次

一. 位运算符(了解)

  1. 定义

    • 对数值进行二进制的位运算
    • 在位运算中 0 为假, 1为真
  2. 分类

    • & : 有0则为0
    • | : 有1则为1
    • ^ : 相同为0 , 不同为1
    • ~ : 按位取反
    • >> : 有符号右移(进行2的倍数的除法时速度非常快)
    • << : 有符号左移
    • >>> : 无符号右移
  3. 演示

    public static void main(String[] args) {
     
     int a = 10; //二进制表现为 1010
     int b = 5;  //二进制表现为 0101
     
     System.out.println(a&b); 
     
     System.out.println(a|b);
     
     System.out.println(a^b);
     
     System.out.println(~a);
     
     System.out.println(a>>1);//右移一位 相当于除以2
     
     System.out.println(a<<1);//左移一位,相当于乘以2
     
     System.out.println(a>>>1);//无符号位移,缺失的首位补0
     
    }
    
  4. 注意事项

    • 一个数异或同一个数两次,结果还是本身
  5. 测试题

    • 不借助第三个变量的前提下交换两个整数变量的值
public class TestDemo{
    public static void main(String[] args){
         //采用加法运算的方法
          int a = 1;
          int b = 2;
          a = a + b;
          b = a - b;//等同于b=a+b-b;
          a = a - b;//等同于a=a+b-(a+b-b);
          //采用按位异或运算的方法
          int a = 1;
          int b = 2;
          a = a ^ b;
          b = a ^ b;//等同于a^b^b;
          a = a ^ b;//等同于a^(a^b);
        }
}

二. 三元运算符

  1. 格式

    • boolean ? 结果1 : 结果2;
    • boolean为true,返回结果1,否则返回结果2
  2. 演示

    • 获取两个数中最大的值

      public static void main(String[] args) {
         int a = 10;
         int b = 20;
         //如果a大于b的话,结果为真,就返回a
         int max = a > b ? a : b;    
         System.out.println(max);
      }
      

三. 从键盘获取数据

  1. 步骤

    • 导入 java.util.Scanner;
    • 创建Scanner对象 Scanner sc = new Scanner(System.in);
    • 调用nextInt()方法获取一个整数 sc.nextInt();
  2. 演示

    //导入类
    import java.util.Scanner;
    
    public class TestDemo {
     
     public static void main(String[] args) {
         //创建键盘录入对象,打开键盘通道
         Scanner sc = new Scanner(System.in);
         //调用方法获取一个整数
         int i = sc.nextInt();
         System.out.println(i);
     }
    }
    

四. 控制语句

  1. 定义
    • 一个程序,想要更加健壮, 就必须能够应对各种各样的状况, 根据实际情况来判定直接结果
    • 所以, 对于程序也应该是根据不同的情况来执行不同的顺序和语句
    • 控制语句就可以控制流程的走向和顺序
  2. 分类
    • 顺序结构
    • 选择结构
    • 循环结构

五. 顺序结构

  1. 定义

    • 按照生活中的习惯, 从上往下,依次执行
  2. 演示

    public static void main(String[] args) {
     //程序会从上往下依次执行
     System.out.println("第一句话");
     
     System.out.println("第二句话");
     
     System.out.println("第三句话");
     
    }
    

六. 选择结构(判断结构)

  1. 定义
    • 可以控制部分语句执行,或跳过一部分语句
  2. 分类
    • if 语句
    • switch语句

七. if 语句格式一

  1. 格式

    if(boolean){
     //执行语句
    }
    
  2. 执行流程

    • 先计算if关键字后面的表达式, 看其返回值是true还是false
    • 如果是true ,就执行后面大括号中的代码
    • 如果是false, 就不执行
  3. 演示

    public static void main(String[] args) {
     
     int a = 1;
     
     if(a>0){
         System.out.println("语句体执行了");
     }
     
    }
    
  4. 注意事项

    • if 后面的小括号里面无论写什么, 结果都必须是boolean值
    • if 语句控制的语句体如果是一条语句,大括号可以省略, 如果是多条语句, 就不能省略,建议永远不要省略
    • 一般来说, 有左大括号就没有分号, 有分号,就没有左大括号
  5. 测试题

    • 只有年龄超过18岁的学生才能玩游戏, 现在编一个程序,来判断一个学生是否可以玩游戏
public class TestDemo02{
    public static void main(String[] args) {
        int age = 22;
        if(age>18){
            System.out.println("pubg");
        }
        else if (age>12) {
            System.out.println("LOL");
        }
        else if (age>6) {
            System.out.println("honor of king");
        }
        else System.out.println("xuandouxiaoq");
    }
}

八. if 语句格式二

  1. 格式

    if(boolean){
     //语句体1
    }else{
     //语句体2
    }
    
  2. 执行流程

    • 首先计算if后面小括号内的表达式的值, 看其返回值是true还是false
    • 如果是true , 就执行语句体1
    • 如果是false, 就执行语句体2
  3. 案例演示

    public static void main(String[] args) {
     
     int i = 1;
     if(i>=18){
         System.out.println("终于可以玩游戏了");
     }else{
         System.out.println("哎... 再等等吧");
     }
     
    }
    
  4. 注意事项

    • else 后面是没有表达式的, 只有if后面有
    • 如果语句体只有一句话, 可以省略大括号,建议不要省略
    • 三元运算符就是这种格式的简写形式,三元运算符可以实现的,这种格式都可以,反之不行
  5. 测试题

    • 妻子嘱咐程序猿丈夫回家的时候买10苹果, 如果碰到卖西瓜的买一个,编程模拟场景
  6. 测试题

    • 如果成绩大于90 ,如果是男生送一个女朋友 , 如果是女生送一个吴彦祖

九. if 语句格式三

  1. 格式

    if(boolean){
     //语句体1
    }else if(boolean){
     //语句体2
    }else{
     //语句体3
    } 
    
    
  2. 执行流程

    • 首先计算if 后面括号内的表达式, 看其返回值结果
    • 如果是true就执行语句体1, if语句结束
    • 如果是false , 就执行下一个else if后面括号中的表达式,看其结果
    • 如果是true ,就执行语句体2
    • 如果是false , 就接着判断下一个else if后面表达式的结果
    • 以此类推, 直到最后执行else语句结束
    • 如果中途有一个if或者else if 后的括号判断结果是true ,则之后的代码都不再执行
  3. 注意事项

    • 最后一个else可以省略, 但建议不要省略, 可以对有效值范围外的错误值进行提示
  4. 演示

    public static void main(String[] args) {
     
     int i = 10;
     if(i>18){
         System.out.println("吃鸡");
     }else if(i>10){
         System.out.println("LOL");
     }else if(i>3){
         System.out.println("王者农药");
     }else{
         System.out.println("泡妞");
     }
    }
    
    
  5. 测试题

    • 从键盘录入一个学生的成绩, 判断其成绩的等级

      100 学神

      90-99 学霸

      80-89 优

      70-79 良

      60-69 及格

      0-59 再接再厉

import java.util.Scanner;
public class TestDemo03{
    public static void main(String[] args) {
        System.out.println("please input your score:");
        Scanner in = new Scanner(System.in);
        int score = in.nextInt();
        if(score==100){
            System.out.println("ヾ(≧▽≦*)oヾ");
        }
        else if (score>=90&&score<100) {
            System.out.println("φ(* ̄0 ̄)");
        }
        else if (score>=80&&score<90) {
            System.out.println("[]~( ̄▽ ̄)~*");
        }
        else if (score>=70&&score<100) {
            System.out.println(" <( ̄︶ ̄)↗");
        }
        else if (score>=60&&score<70) {
            System.out.println(" (✿◡‿◡)");
        }
        else if (score>=0&&score<60) {
            System.out.println(" `(*>﹏<*)′");
        }
        else System.out.println("rua~");
    }
}

十. switch 语句

  1. 格式

    switch(值){
     case 值1:    
         //语句体1;
         break;
     case 值2:        
         //语句体2;
         break;
     //......
     default:
         //语句体3;
         break;
    }
    
    
  2. 执行流程

    • 先看switch括号中的值

    • 然后和case后面的值匹配, 如果有就执行这个case后面的语句, 否则执行default 控制的语句

  3. 注意事项

    • case后面只能是常量, 不能是变量, 多个case后面不能出现相同的值
    • switch后面的值的类型只能是byte, short ,int ,字符, 字符串 , 枚举
    • 结束条件: 执行到break , 或者代码运行完毕结束,如果一直遇不到break就会一直执行
    • defautl 可以省略, 但是建议不要省略
  4. 演示

    public static void main(String[] args) {
     //输入数值,打印对象的星期数
     int week = 5;
     switch (week) {
         case 1:
             System.out.println("星期一");
             break;
         case 2:
             System.out.println("星期二");
             break;
         case 3:
             System.out.println("星期三");
             break;
         case 4:
             System.out.println("星期四");
             break;
         case 5:
             System.out.println("星期五");
             break;
         case 6:
             System.out.println("星期六");
             break;
         case 7:
             System.out.println("星期七");
             break;
         default:
             System.out.print("您的输入有误");
             break;
     }
     
    }
    
    
  5. case穿透

    • 当程序执行某个case后的代码,但是没有遇到break的时候, 就会一直执行下面的所有可执行的语句
    public static void main(String[] args) {
     
     int week = 1;
     switch (week) {
         case 1:
             System.out.println("语句1......");
             break;
         case 2:
             System.out.println("语句1......");
             break;
         case 3:
             System.out.println("语句1......");
             break;
         default:
             System.out.print("其他情况");
             break;
     }
    }
    
    
  6. 测试题

    • 使用switch语句改写判断学生成绩的等级
import java.util.Scanner;
public class TestDemo05{
    public static void main(String[] args) {
        System.out.println("please input your score:");
        Scanner in = new Scanner(System.in);
        int score = in.nextInt();
        switch(score/10){
            case 10:
                System.out.println("...");
                break;
            case 9:
                System.out.println("...");
                break;
            case 8:
                System.out.println("...");
                break;
            case 7:
                System.out.println("...");
                break;
            case 6:
                System.out.println("...");
                break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
                System.out.println("...");
                break;
            default:
                System.out.println("data Error");
                break;
        }
    }
}
  1. 测试题

    • 判断 春夏秋冬 打印输出 春天 春暖花开 夏天 夏天打盹 秋天 秋高气爽 冬天 冬眠
import java.util.Scanner;
public class TestDemo04{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("please input season");
        String str = in.next();
        switch(str){
            case "spring":
                System.out.println("spring is suitable to zzzzz");
                break;
            case "summer":
                System.out.println("summer is suitable to zzzzz");
                break;
            case "autumn":
                System.out.println("autumn is suitable to zzzzz");
                break;
            case "winter":
                System.out.println("winter is suitable to zzzzz");
                break;
            default:
                System.out.println("I like sleeping");
                break;
        }
    }
}
  1. 测试题

    • 利用switch实现一个计算器操作
      • 第一次输入一个整数
      • 第二次输入一个运算符
      • 第三次输入整数
import java.util.Scanner;
public class TestDemo06{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("please input first integer:");
        int a = in.nextInt();
        System.out.println("please input the operator:(+ - * /)");
        String str = in.next();
        System.out.println("please input second integer:");
        int b = in.nextInt();
        switch(str){
            case "+":
                System.out.println((a+b));
                break;
            case "-":
                System.out.println((a-b));
                break;
            case "*":
                System.out.println((a*b));
                break;
            case "/":
                System.out.println((a/b));
                break;
            default:
                System.out.println("operator is not permitive!");
                break;
        }
    }
}

总结:

  1. 位运算

    • ^ : 一个数异或另一个数两次,结果还是自己
    • >>n : 相当于除以 2 的n次方
  2. 三元运算符

    • boolean? 结果1:结果2
    • if else的简写形式
  3. 键盘录入

    • 导包
    • 和键盘建立连接
    • 调用方法获取数据
  4. 控制语句

    • 顺序结构
    • 选择结构
    • 循环结构
  5. if语句

    if(boolean){
        
    }
    
    
    if(boolean){
        
    }else{
        
    }
    
    
    if(boolean){
        
    }else if(boolean){
        
    }....
    else{
        
    }
    
    
  6. switch 语句

    • 可以接收的值 : int String 枚举
    • case穿透 : 执行没有碰到break,会继续往下执行 ,直到碰到break或碰到右大括号
    • case后面的值不能重复

作业

  1. 第一题

    • 饭店里面有五道菜, 黄花鱼 200块, 烤鸭 100块, 红烧肉 60块, 小炒肉 40块, 白水豆腐 10块
    • 一个客人进了饭店, 根据身上的钱来决定最好能吃哪道菜 , 编程模拟
  2. 第二题

    • 从键盘接收一个名次(int) 使用switch-case作如下分支
      名次为1 奖IPHONExs Max
      名次为2 奖IPHONE8
      名次为3 奖IPHONE7
      名次为 4 奖IPHONE6
      其它名次 努力吧,少年
  3. 第三题

    • 编写程序,判断给定的某个年份是否是闰年
      闰年的判断规则如下:

        (1)若某个年份能被4整除但不能被100整除,则是闰年。
        (2)若某个年份能被400整除,则也是闰年。
      
  4. 扩展题

    • 编程实现已知某人的工资(要求输入),求他应该缴纳的个人所得税以及最后得到的工资。

      个人所得税计算方法计算方法 :
      ​ 全月应纳税所得额 =工资薪金所得-3500
      ​ 应纳税额 = 应纳税所得额 *税率-速算扣除数
      ​ 级数 全月应纳税所得额 税率(%) 速算扣除数
      ​ 1 不超过500元的 5 0
      ​ 2 超过500元至2000元的部分 10 25
      ​ 3 超过2000元至5000元的部分 15 125
      ​ 4 超过5000元至20000元的部分 20 375
      ​ 5 超过20000元至40000元的部分 25 1375
      ​ 6 超过40000元至60000元的部分 30 3375
      ​ 7 超过60000元至80000元的部分 35 6375
      ​ 8 超过80000元至100000元的部分 40 10375
      ​ 9 超过100000元的部分 45 15375

相关文章

网友评论

      本文标题:Day03

      本文链接:https://www.haomeiwen.com/subject/jwyzictx.html