day04逻辑运算符短路、多分支结构(if和switch)、循环结构、while循环

复习

1.运算符和表达式

1)表达式

2)算数运算符

  + - * / %

3)关系运算符

  >  <  >=  <=  ==  !=

4)逻辑运算符

  &&   ||    !

 

5)字符串连接  

  +

6)赋值运算符

  =

  +=  -=  *=  /=  %=

  int x=10;

  x+=5;//x=x+5;

7)自增自减

  ++  --

  int x=1;

  int y=x++ ;

8)三目运算符(条件运算符)

  int score=97;

  int money= score>=90 ? 200 : 5;

 

2.分支结构

1)单分支

  if(<条件>){

      //条件为真时运行的代码

  }

  //无论条件真假都会运行的代码

2)双分支

  if(<条件>){

      //条件为真时运行的代码

  }else{

      //条件为假时运行的代码

  }

  //无论条件真假都会运行的代码

 

 

 

 

 

笔记

1.逻辑运算符的短路特性

  &&   ||

1)&&当左侧变量值为false时

  右侧无论什么值,结果都为false

  那么&&右侧就没必要运行了

 

2)||当左侧变量值为true时

  右侧无论什么值,结果都为true

  那么||右侧就没必要运行了

 

3)为什么会设计这样的特性

  当根据第一个条件已经能判断出结果

  ,就没必要运行第二个条件了

  能提高运行的效率

 

2.多分支结构

1)一个条件触发的情况在3种或3种以上

 

2)多重if结构

  小明考试成绩

  >=90    优秀

  >=80    良好

  >=60    及格

  <60     不及格

  格式

  if(<条件1>){

     //条件1为真时运行

  }else if(<条件2>){

     //条件1为假,条件2为真时运行

  }else if(<条件3>){

     //条件1,2为假,条件3为真时运行

  }else{

     //条件1,2,3均为假时运行

  }

  1.else if的数量是不限的

  2.else可以根据需要省略

  3.每个结构的{}都可能省略

  4.判断条件的顺序是要求的

 

3)switch结构

  语法

  switch(<整数表达式>){

  case 1:

    //当整数表达式值为1时运行的语句

    break;

  case 2:

    //当整数表达式值为2时运行的语句

    break;

  .....

  default:

    //当整数表达式没有匹配值时运行

  }

 

  整数表达式

  可以是byte\short\char\int

  JDK1.7开始

  可以编写字符串表达式,但是用处不大

 

  break关键字

  switch结构中运行到break

  会终止(跳出)swtich结构

  语法上没有强制要求必须编写break

  但是不编写break会出现case穿透现象

 

 

  根据小明考试的名次,来获得奖励

  1          苹果笔记本电脑

  2          ipad

  3          智能手表

  4          智能音箱

  其他名次:  没有奖励

 

3.多分支结构小结

1)多重if结构  

  特别适合于判断一个变量在

  某个范围时的情况

2)switch结构

  使用灵活,运行效率高

  但是只能做等值判断

3)小结:等值判断使用switch

       范围判断使用多重if

 

4.循环结构

1)什么是循环结构

  编写的代码执行多次的情况

  在程序中,反复的执行相同

                     或相似的代码

2)为什么要使用循环结构

  减少代码冗余,提高程序的可维护性

3)怎么样使用循环

  循环的要素

  3.1)循环变量

  3.2)循环条件

  3.3)循环操作

  3.4)变量更新

 

5.while循环

1)语法结构

  while(<条件>){

      //条件为真时运行的代码

  }

 

 

代码整体缩进快捷键

Ctrl+A;

Ctrl+I;

 

作业

1)商场根据积分发不同类型的会员卡

  >=5000  黑金卡

  >=2000  铂金卡

  >=1000  金卡

  <1000   银卡

  用户输入小红会员卡的积分

  输出小红会员卡的类型

        Scanner scan=new Scanner(System.in);
        System.out.println("请输入小红的积分");
        int point=scan.nextInt();
        if(point>=5000) {
            System.out.println("黑金卡");
        }else if(point>=2000) {
            System.out.println("铂金卡");
        }else if(point>=1000) {
            System.out.println("金卡");
        }else {
            System.out.println("银卡");
        }
View Code

 

 

2)用户输入小红商场消费金额

  >500元 8折

  >100元 9折

  >50元  95折

  <=50元 不打折

  输出实际消费的金额

        Scanner scan=new Scanner(System.in);
        System.out.println("输入小红的消费金额");
        double money=scan.nextDouble();
        if(money>500) {
            money*=0.8;
        }else if(money>100) {
            money*=0.9;
        }else if(money>50) {
            money*=0.95;
        }
        System.out.println("消费金额为:"+money);
View Code

 

 

switch结构

1)食堂每天有特价菜

  用户输入周几(1~7)

  1  ----   黄焖鸡

  2  ----   烤鸭

  3  ----   酸菜鱼

  4  ----   西红柿牛腩

  5  ----   孜然羊肉

  其他 ----   没有特价菜

        Scanner scan=new Scanner(System.in);
        System.out.println("请输入周几");
        int day=scan.nextInt();
        
        switch(day) {
        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;
        default:    
            System.out.println("没有特价菜");
        }
View Code

 

2)用户输入一个月份

  输出这个月份有多少天

  1,3,5,7,8,10,12 ----31天

  4,6,9,11        ----30天

  2               ----平年28天,闰年29天

        Scanner scan=new Scanner(System.in);
        System.out.println("请输入年份");
        int year=scan.nextInt();
        System.out.println("请输入月份");
        int month=scan.nextInt();
        switch(month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            System.out.println("31天");
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            System.out.println("30天");
            break;
        case 2:
            if(year%4==0 && year%100!=0 || 
                            year%400==0) {
               System.out.println("29天");
            }else {
               System.out.println("28天");    
            }
        }
View Code

 

循环结构

1)使用循环结构

  向控制台输出1~200

        int i=1;//循环变量
        while(i<=200) {//循环条件
            //循环操作
            System.out.println("第"+i+"次,猥琐发育,别浪~");
            i++;//变量更新
        }
        System.out.println("over");
View Code

 

2)使用循环结构

  向控制台输出2~100之间的所有偶数

        int i = 2;
        while (i <= 100) {
            if (i % 2 == 0) {

                System.out.println(i);
            }
            i++;
        }
View Code

 

3)计算从1+2+3+4+5+...+99+100的和

  这样的题我们称之为累加操作

  只要需要累加的题目,

  都要定义变量sum

        int sum=0;
        int i=1;
        while(i<=100) {//sum:21 i:6
            sum+=i;
            i++;
        }
        System.out.println(sum);
View Code

 

4)计算1~100之间所有奇数的和

        int sum = 0;
        int i = 1;
        while (i <= 100) {
            
            if (i % 2 != 0) {
                sum += i;
                System.out.println(i);
            }
            i++;
        }
        
        System.out.println(sum);
View Code

 

5)小明上班第一个月工资4000

  每个月比上个月工资涨200

  计算输出12个月后小明  总共拿到了多少工资

        int sum=0;// 累加和
        int i=1;//表示月份
        int sal=4000;//工资
        while(i<=12) {
            sum+=sal;
            System.out.println("i:"+i+",sal:"+sal+",sum:"+sum);
            sal+=200;
            i++;
        }
        System.out.println(sum);
View Code

 

6)打印出1-100之间所有不是7的倍数

          和不包含7的数字,并求和

  i%7!=0 && i%10!=7 && i/10!=7

 

        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if(i%7 ==0 || i%10 == 7 || i/10 == 7){//注意:70-79容易漏掉
                continue;
            }
            sum += i;
        }
        System.out.println(sum);
View Code

 

7)4.3循环输入5个数,

输完后显示这些数中有没有负数

        Scanner scan=new Scanner(System.in);
        System.out.println("请输入5个数字");
        int flag=0;//立旗
        int i=1;
        while(i<=5) {
            int num=scan.nextInt();
            if(num<0) {
                flag=1;
            }
            i++;
        }
        if(flag==0) {
            System.out.println("没有负数");
        }else {
            System.out.println("有负数");
        }
View Code

 

posted @ 2019-09-18 11:56  佩奇er  阅读(799)  评论(0编辑  收藏  举报