day03_java的Scanner入录_分支_循环

day03_java的Scanner入录_分支_循环

第一章.键盘录入_Scanner

概念

1.概述:Scanner是java定义好的类
2.作用:通过键盘录入的形式将数据放到代码中参与运行
3.怎么用:
  a.导包:为了找到想使用的类 -> import java.util.Scanner
  b.创建对象: Scanner 对象名 = new Scanner(System.in);
  c.调用方法,实现键盘录入:
    对象名.nextInt() -> 录入一个整数
    对象名.next() -> 录入一个字符串      
案例1
public class Demo01Scanner {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入一个整数:");
        int data1 = sc.nextInt();
        System.out.println("data1 = " + data1);
        System.out.println("请您输入一个字符串:");
        String data2 = sc.next();
        System.out.println("data2 = " + data2);
    }
}
案例2
public class Demo02Scanner {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入第一个整数:");
        int data1 = sc.nextInt();
        System.out.println("请你输入第二个整数:");
        int data2 = sc.nextInt();
        System.out.println("请你输入第三个整数:");
        int data3 = sc.nextInt();

        int temp = (data1 > data2) ? data1 : data2;
        int max = (temp > data3) ? temp : data3;
        System.out.println("max = " + max);
    }
}
案例3

键盘输入类型与实际接收类型不一致导致错误

Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Scanner.java:864)
	at java.util.Scanner.next(Scanner.java:1485)
	at java.util.Scanner.nextInt(Scanner.java:2117)
	at java.util.Scanner.nextInt(Scanner.java:2076)
	at com.atguigu.a_scanner.Demo02Scanner.main(Demo02Scanner.java:9)

next()和nextLine()区别?

next():录入字符串,遇到回车或者空格就结束录入了
nextLine():录入字符串,遇到回车就结束录入
public class Demo03Scanner {
     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         String data1 = sc.next();
         String data2 = sc.nextLine();
         System.out.println(data1);
         System.out.println(data2);
     }
 }

在这里插入图片描述

第二章.switch(选择语句)

1.switch基本使用

1.格式:
  switch(表达式){
      case 常量值1:
          执行语句1;
          break;
      case 常量值2:
          执行语句2;
          break;
      case 常量值3:
          执行语句3;
          break;
          ...
      default:
          执行语句n;
          break;
  }

2.执行流程:1步:根据switch中表达式的值,依次匹配各个case。如果表达式的值等于某个case中的常量值,则执行对应case中的执行语句。

	第2步:执行完此case的执行语句以后,
		情况1:如果遇到break,则执行break并跳出当前的switch-case结构
	    情况2:如果没有遇到break,则会继续执行当前case之后的其它case中的执行语句。--->case穿透
		...
		直到遇到break关键字或执行完所有的casedefault的执行语句,跳出当前的switch-case结构
      
3.注意:
	switch(表达式)中表达式的值必须是下述几种类型之一:byteshortcharint,枚举 (jdk 5.0)String (jdk 7.0)case子句中的值必须是常量,不能是变量名或不确定的表达式值或范围;
	同一个switch语句,所有case子句中的常量不能相同;
public class Demo01Switch {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入一个整数:");
        int data = sc.nextInt();
        switch (data){
            case 1:
                System.out.println("离离原上草");
                break;
            case 2:
                System.out.println("一岁一枯荣");
                break;
            case 3:
                System.out.println("野火烧不尽");
                break;
            case 4:
                System.out.println("春风吹又生");
                break;
            default:
                System.out.println("输入错误");
                break;
        }
    }
}

2.case的穿透性

如果没有break,会出现case的穿透性,代码会一直往下穿透执行,直到遇到break或者switch结束了为止
public class Demo02Switch {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int month = sc.nextInt();
        switch(month){
            case 12:
                System.out.println("冬季");
                break;
            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;
            case 8:
                System.out.println("夏季");
                break;
            case 9:
                System.out.println("秋季");
                break;
            case 10:
                System.out.println("秋季");
                break;
            case 11:
                System.out.println("秋季");
                break;
            default:
                System.out.println("输入有误!");
                break;
        }
    }
}

public class Demo02Switch {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int month = sc.nextInt();
        switch(month){
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            default:
                System.out.println("输入有误!");
                break;
        }
    }
}

第三章.分支语句

1.if的第一种格式

1.格式:
  if(boolean表达式){
      执行语句
  }

  或者:
  if(boolean表达式)
      执行语句
2.执行流程:if后面的执行语句,如果是true,就走if后面大括号中的执行语句
  否则就不走
public class Demo01If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入第一个整数:");
        int data1 = sc.nextInt();
        System.out.println("请您输入第二个整数:");
        int data2 = sc.nextInt();

        if (data1==data2){
            System.out.println("相等");
        }
        /*if (data1==data2)
            System.out.println("相等");*/

    }
}

2.if的第二种格式

1.格式:
  if(boolean表达式){
      执行语句1
  }else{
      执行语句2
  }
2.执行流程:
  先走if后面的boolean表达式,如果是true,就走if后面的执行语句1
  否则就走else后面的执行语句2
public class Demo02If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入第一个整数:");
        int data1 = sc.nextInt();
        System.out.println("请您输入第二个整数:");
        int data2 = sc.nextInt();

        if (data1==data2){
            System.out.println("相等");
        }else{
            System.out.println("不相等");
        }

        /*if (data1==data2)
            System.out.println("相等");
        else
            System.out.println("不相等");*/

    }
}
2.1 练习
任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
public class Demo03If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入一个整数:");
        int data = sc.nextInt();
        if (data%2==0){
            System.out.println("偶数");
        }else{
            System.out.println("奇数");
        }
    }
}

2.2练习
需求.利用if  else 求出两个数的较大值
public class Demo04If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入第一个整数:");
        int data1 = sc.nextInt();
        System.out.println("请你输入第二个整数:");
        int data2 = sc.nextInt();

        if (data1>data2){
            System.out.println(data1);
        }else {
            System.out.println(data2);
        }
    }
}
public class Demo05If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入第一个整数:");
        int data1 = sc.nextInt();
        System.out.println("请你输入第二个整数:");
        int data2 = sc.nextInt();
        System.out.println("请你输入第三个整数:");
        int data3 = sc.nextInt();

        int temp = 0;
        if (data1>data2){
            temp = data1;
        }else{
            temp = data2;
        }

        if (temp>data3){
            System.out.println(temp);
        }else{
            System.out.println(data3);
        }
    }
}
2.3练习
案例:从键盘输入年份,请输出该年的2月份的总天数。闰年2月份29天,平年28天。
闰年:
 a.能被4整除,但是不能被100整除
 b.或者能直接被400整除
public class Demo06If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请你输入一个年份:");
        int year = sc.nextInt();
        /*
           a.能被4整除,但是不能被100整除
           b.或者能直接被400整除
         */
        if ((year%4==0 && year%100!=0) || (year%400==0)){
            System.out.println("闰年2月有29天");
        }else{
            System.out.println("平年2月有28天");
        }
    }
}
2.4练习
public class Demo07IfElse {
    public static void main(String[] args) {
        boolean num1 = false;
        boolean num2 = true;

        int i = 1;

        /*
          num2为true
          将num2的值赋值给了num1,num1由false变成true
         */
        if (num1=num2){
            i++;
            System.out.println(i);//2
        }

        if (false){
            --i;
            System.out.println(i);
        }
    }
}

3.if的第三种格式

1.格式:
  if(boolean表达式){
      执行语句1;
  }else if(boolean表达式){
      执行语句2;
  }else if(boolean表达式){
      执行语句2;
  }else if(boolean表达式){
      执行语句2;
  }...else{
      执行语句n
  }
2.执行流程:
  a.先走if后面的boolean表达式,如果是true,就走if对应的执行语句1
  b.否则就走下面的else if,如果是true,就走else if对应的执行语句2
  c.否则就继续走下面的else if,以上所有判断都不成立,就走else对应的执行语句
public class Demo08If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入第一个整数:");
        int data1 = sc.nextInt();
        System.out.println("请您输入第二个整数:");
        int data2 = sc.nextInt();
        /*if (data1>data2){
            System.out.println("data1大于data2");
        }else if(data1<data2){
            System.out.println("data1小于data2");
        }else{
            System.out.println("data1等于data2");
        }*/

        if (data1>data2){
            System.out.println("data1大于data2");
        }else if(data1<data2){
            System.out.println("data1小于data2");
        }else if (data1==data2){
            System.out.println("data1等于data2");
        }
    }
}

3.1.练习
需求:
 键盘录入一个星期数(1,2,...7),输出对应的星期一,星期二,...星期日

输入  1      输出	星期一
输入  2      输出	星期二
输入  3      输出	星期三
输入  4      输出	星期四
输入  5      输出	星期五
输入  6      输出	星期六
输入  7      输出	星期日
输入  其它数字   输出      数字有误
public class Demo09If {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入一个数:");
        int week = sc.nextInt();
        /*if (week==1){
            System.out.println("周一");
        }else if(week==2){
            System.out.println("周二");
        }else if(week==3){
            System.out.println("周三");
        }else if(week==4){
            System.out.println("周四");
        }else if(week==5){
            System.out.println("周五");
        }else if(week==6){
            System.out.println("周六");
        }else if(week==7){
            System.out.println("周日");
        }else{
            System.out.println("输入有误!");
        }*/

        if (week<1 || week>7){
            System.out.println("输入有误");
        }else{
            if (week==1){
                System.out.println("周一");
            }else if(week==2){
                System.out.println("周二");
            }else if(week==3){
                System.out.println("周三");
            }else if(week==4){
                System.out.println("周四");
            }else if(week==5){
                System.out.println("周五");
            }else if(week==6){
                System.out.println("周六");
            }else if(week==7){
                System.out.println("周日");
            }
        }
    }
}
3.2练习
- 需求: 小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。
- 奖励规则:
95~100		山地自行车一辆
90~94		游乐场玩一次
80~89		变形金刚玩具一个
80以下	   胖揍一顿
public class Demo10If {
    public static void main(String[] args) {
       //95~100		山地自行车一辆
       //90~94		游乐场玩一次
       //80~89		变形金刚玩具一个
       //80以下	   胖揍一顿
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();
        /*if (score>=95 && score<=100){
            System.out.println("山地自行车一辆");
        }else if (score>=90 && score<=94){
            System.out.println("游乐场玩一次");
        }else if(score>=80 && score<=89){
            System.out.println("变形金刚一个");
        }else if (score>=0 && score<80){
            System.out.println("胖揍一顿");
        }else{
            System.out.println("弄死你呀,一共就100分,还给我考冒了");
        }*/

        if (score<0 || score>100){
            System.out.println("弄死你呀,一共就100分,还给我考冒了");
        }else{
            if (score>=95 && score<=100){
                System.out.println("山地自行车一辆");
            }else if (score>=90 && score<=94){
                System.out.println("游乐场玩一次");
            }else if(score>=80 && score<=89){
                System.out.println("变形金刚一个");
            }else if (score>=0 && score<80){
                System.out.println("胖揍一顿");
            }
        }
    }
}

从效率上来说,switch比if要快

if是从上到下挨个判断

switch直接跳到相匹配的位置

但是开发中if用的多,因为用起来比较灵活

第四章.循环语句

1.for循环

1.格式:
  for(初始化变量;比较;步进表达式){
      循环语句
  }
2.执行流程:
  a.先走初始化变量
  b.比较,如果是true,走循环语句,走步进表达式
  c.再比较,如果还是true,继续走循环语句,再走步进表达式
  d.再比较,直到比较为false,循环结束

在这里插入图片描述

public class Demo01For {
    public static void main(String[] args) {
        for (int i = 0;i<5;i++){
            System.out.println("我爱java");
        }
    }
}

在这里插入图片描述

1.1练习

for循环:1-3之间的数据和,并把求和结果输出到控制台上
1+2+3
    
步骤:
  1.定义一个变量sum,用于接收两个数相加之和
  2.利用for循环1 2 3表示出来
  3.在循环体中做运算,两两相加,结果赋值给sum
  4.输出sum    
public class Demo02For {
    public static void main(String[] args) {
        //1.定义一个变量sum,用于接收两个数相加之和
        int sum = 0;
        //2.利用for循环1 2 3表示出来
        for (int i = 1;i<=3;i++){
        //3.在循环体中做运算,两两相加,结果赋值给sum
            sum+=i;//sum = sum+i;
        }
        //4.输出sum
        System.out.println("sum = " + sum);
    }
}

在这里插入图片描述

1.2练习

需求:求出1-100的偶数和
步骤:
  1.定义一个变量sum,接收两个数的和
  2.利用for循环将1-100的数表述出来
  3.在循环体中判断,如果是偶数-> 相加,将结果赋值给sum
  4.输出sum
public class Demo03For {
    public static void main(String[] args) {
        //1.定义一个变量sum,接收两个数的和
        int sum = 0;
        //2.利用for循环将1-100的数表述出来
        for (int i = 1;i<=100;i++){
        //3.在循环体中判断,如果是偶数-> 相加,将结果赋值给sum
            if (i%2==0){
                sum+=i;
            }
        }
        //4.输出sum
        System.out.println("sum = " + sum);
    }
}

1.3练习

统计一下1-100之间的偶数个数
步骤:
  1.定义一个变量count,计数
  2.利用for循环将1-100的数表述出来
  3.在循环体中判断,如果是偶数-> count++
  4.输出count
public class Demo04For {
    public static void main(String[] args) {
        //1.定义一个变量count,计数
        int count = 0;
        //2.利用for循环将1-100的数表述出来
        for (int i = 1;i<=100;i++){
        //3.在循环体中判断,如果是偶数-> count++
            if (i%2==0){
                count++;
            }
        }
        //4.输出count
        System.out.println("count = " + count);
    }
}

快速生成for循环快捷键:

次数.fori

2.while循环

1.格式:
  初始化变量;
  while(比较){
    循环语句
    步进表达式
  }
2.执行流程:
  a.初始化变量
  b.比较,如果是true,执行循环语句,走步进表达式
  c.再比较,如果还是true,继续循环,走步进表达式
  d.再比较,直到比较为false,循环结束

案例1

public class Demo01While {
    public static void main(String[] args) {
        int i = 0;
        while(i<5){
            System.out.println("我爱java");
            i++;
        }
    }
}

案例2

public class Demo02While {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;
        while(i<=100){
            sum+=i;
            i++;
        }
        System.out.println("sum = " + sum);
    }
}

案例3

public class Demo03While {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;
        while (i <= 100) {
            if (i % 2 == 0) {
                sum += i;
            }
            i++;
        }
        System.out.println("sum = " + sum);
    }
}

案例4

public class Demo04While {
    public static void main(String[] args) {
        int count = 0;
        int i = 1;
        while (i <= 100) {
            if (i % 2 == 0) {
                count++;
            }
            i++;
        }
        System.out.println("count = " + count);
    }
}
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值