Java5流程控制-Scanner、If、Switch

Scanner对象

Java提供的一个工具类,用以实现程序和人的交互,使程序可以获取用户的输入

java.util.Scanner是Java5的新特征

我们可以通过Scanner类来获取用户的输入

 

基础语法:

Scanner s = new Scanner(System.in);

 

通过Scanner类的next()nextLine()方法获取输入的字符串,

在读取前一般需要使用hasNext()hasNextLine()判断是否还有输入的数据

 

next():

  1. 一定要读取到有小资附后才可以结束输入

  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉

  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

  4. next()不能得到带有空格的字符串

public class Demo01 {
  public static void main(String[] args) {
      //创建一个扫描器对象,用于接收键盘数据
      Scanner scanner = new Scanner(System.in);

      System.out.println("使用next方式接收:");     //输入Hello World

      //判断用户有没有输入字符串
      if(scanner.hasNext()){
          //使用next方式接收
          String str = scanner.next();           //next()不能得到带有空格的字符串
          System.out.println("输出的内容为:"+str); //输出为Hello
      }

      //凡是属于IO流的类如果不关闭会一直占用资源,需要养成良好的习惯,用完就关掉
      scanner.close();
  }
}

 

nextLine():

  1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

  2. 即可以获得输入的带空格的字符串

public class Demo02 {
  public static void main(String[] args) {
      // 从键盘接收数据
      Scanner scanner = new Scanner(System.in);

      System.out.println("使用nextLine方式接收:"); //输入Hello World

      //判断是否还有输入
      if(scanner.hasNextLine()){
          String str = scanner.nextLine();       //nextLine()以Enter为结束符
          System.out.println("输出的内容为:"+str); //输出为Hello World
      }

      scanner.close();
  }
}

 

练习:

判断是否为整数和小数:

public class Demo04 {
  public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);

      //从键盘接收数据
      int i = 0;
      float f = 0.0f;

      System.out.println("请输入整数:");

      //if判断结构
      //如果...那么
      if(scanner.hasNextInt()){
          i = scanner.nextInt();
          System.out.println("整数数据:"+ i);
      }else {
          System.out.println("输入的不是整数数据!");
      }

      System.out.println("请输入小数:");

      //如果...那么
      if(scanner.hasNextFloat()){
          f = scanner.nextFloat();
          System.out.println("小数数据:"+ f);
      }else {
          System.out.println("输入的不是小数数据!");
      }

      scanner.close();
  }
}

 

连续输入多个数,计算总和和平均值

利用while循环结构

public class Demo05 {
  public static void main(String[] args) {
      //可以输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
      Scanner scanner = new Scanner(System.in);

      //和
      double sum = 0;
      //计算输入了多少个数字
      int m = 0;

      //while循环结构
      //通过循环判断是否还要输入,并在里面对每一次进行求和统计
      while (scanner.hasNextDouble()){
          double x = scanner.nextDouble();
          m = m + 1;
          //m++;
          sum = sum + x;
          System.out.println("你输入了第" + m + "个数据,当前结果sum=" + sum);
      }

      System.out.println(m + "个数的和为" + sum);
      System.out.println(m + "个数的平均值为" + (sum / m));

      scanner.close();
  }
}

 

顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序执行语句

顺序结构是最简单的算法结构

语句与语句之间,框与框之间是按照从上而下的顺序进行的,它是由若干个依次执行的处理步骤组成的

它是任何算法都离不开的一种基本算法结构

public class ShunXuDemo {
  public static void main(String[] args) {
      //顺序结构
      System.out.println("hello");   //hello
      System.out.println("world");   //world
      System.out.println("my");       //my
      System.out.println("love");     //love
      System.out.println("!");       //!
  }
}

 

选择结构

if单选择结构

很多时候需要去判断一个东西是否可行,然后才去执行

此时,这样一个过程在程序中用if语句表示

 

语法:

if(布尔表达式){
  //如果布尔表达式为true,将执行语句
}
public class IfDemo01 {
  public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);

      System.out.println("请输入内容:");
      String s = scanner.nextLine();

      //equals:判断字符串是否相等
      if(s.equals("Hello")){
          System.out.println(s);
      }

      System.out.println("End");
      scanner.close();
  }
}

 

if双选择结构

题目:

需求,公司要收购一个软件,成功了,支付100万元,失败了,自己找人开发。这样的需求用一个if无法完成,需要两个判断,就需要双选择结构,所以有了if-else结构

 

语法:

if(布尔表达式){
  //如果布尔表达式的值为true
}else{
  //否则布尔表达式的值为false
}
public class IfDemo02 {
  public static void main(String[] args) {
      //考试分数大于等于60及格,小于60不及格
      Scanner scanner = new Scanner(System.in);

      System.out.println("请输入成绩:");
      float score = scanner.nextFloat();

      if(score>=60){
          System.out.println("及格");
      }else {
          System.out.println("不及格");
      }
      scanner.close();
  }
}

 

if多选择结构

真实情况可能存在ABCD等等多种情况,存在区间多级判断

所以需要一个多选择结构来处理问题

 

语法:

if(布尔表达式1){
  //如果布尔表达式1的值为true,则执行此行代码
}else if(布尔表达式2){
  //如果布尔表达式2的值为true,则执行此行代码
}else if(布尔表达式3){
  //如果布尔表达式3的值为true,则执行此行代码
}else {
  //如果以上布尔表达式都不为true,则执行此行代码
}
public class IfDemo03 {
  public static void main(String[] args) {
      //分数>=60<70是及格,>=70<80是中等,>=80<90为良好,>90<100为优秀,等于100为满分
      // 大于0小于60为不及格,小于0或者大于100提示输入错误
      Scanner scanner = new Scanner(System.in);
      /*
      if语句至多只有一个else语句,else语句在所有else if语句之后
      if语句可以有若干个else if语句,其必须在else语句之前
      一旦其中一个else if语句为true,其他的else if以及else语句都将跳过执行
        */
      System.out.println("请输入成绩:");
      float score = scanner.nextFloat();

      if(score==100){
          System.out.println("满分!");
      }else if(score<100 && score>=90){
          System.out.println("优秀");
      }else if(score<90 && score>=80){
          System.out.println("良好");
      }else if(score<80 && score>=70){
          System.out.println("中等");
      }else if(score<70 && score>=60){
          System.out.println("及格");
      }else if(score<60 && score>=0){
          System.out.println("不及格");
      }else {
          System.out.println("输入错误!!!");
      }

      scanner.close();
  }
}

 

嵌套的if结构

使用嵌套的if...else语句是合法的

可以在另一个if或者else if语句中使用if或者else if语句

可以箱if语句一样嵌套else if...else

 

语法:

if(布尔表达式1){
  //如果布尔表达式的值为true,执行此行代码
  if(布尔表达式2){
  //如果布尔表达式的值为true,执行此行代码
  }
}

 

switch多选择结构

多选择结构还有一个实现方式为switch case语句

switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

switch(expression){
   case value:
       //语句
       break;//可选
   case value:
       //语句
       break;//可选
   //你可以有任意数量的case语句
   default://可选
       //语句
}

实例:

public class SwitchDemo01 {
   public static void main(String[] args) {
       //case穿透   //switch 匹配一个具体的值
       char grade = 'A';

       switch (grade){
           case 'A':
               System.out.println("优秀");
               break;  //可选,终止程序继续往下运行
           case 'B':
               System.out.println("良好");
               break;  //可选
           case 'C':
               System.out.println("及格");
               break;  //可选
           case 'D':
               System.out.println("再接再厉");
               break;  //可选
           case 'E':
               System.out.println("挂科");
               break;  //可选
           default :
               System.out.println("未知等级");
      }
  }
}

 

switch语句中的变量类型可以使:

  • byte、short、int或者char

  • 从Java SE 7开始

  • switch支持字符串String类型

  • 同时case标签必须为字符串常量或字面量

public class SwitchDemo02 {
   public static void main(String[] args) {
       String name = "学校";
       //JDK7的特性,表达式结果可以是字符串
       //自负的本质还是数字

       //反编译   java--->class(字节码文件)--->反编译(IDEA)

       switch (name){
           case "好喽":
               System.out.println("好喽");
               break;
           case "学校":
               System.out.println("学校");
               break;
           default:
               System.out.println("弄啥嘞!");
      }
  }
}

 

posted on 2021-12-04 14:41  海丿鸢  阅读(44)  评论(0)    收藏  举报

导航