Java流程控制

用户交互Scanner

  1. Scanner对象

    • 通过Scanner类可以获取用户的输入,使用前需要使用import Java.util.Scanner导入类

    • 基本语法Scanner s=new Scanner(System.in);

    • 通过Scanner类的next()与nextLine()方法获取输入字符串,在读取前,一般使用hasNext()与hasNextLine()判断是否还有输入数据(也可以不使用)

    • next和nextLine区别:next()不能得到带有空格的字符串,nextLine可以得到空白

    • 最后IO流的类都要关闭,否则会一直占用资源

 import java.util.Scanner;
 //使用hasNext判断
 public class Demo3 {
     public static void main(String[] args) {
         //创建一个Scanner对象,用于接收键盘数据
         Scanner scanner = new Scanner(System.in);
         System.out.println("使用next方式接收:");
         //判断用户有没有输入字符串
         if(scanner.hasNext()){
             //使用next方式接收
             String str=scanner.next();
             System.out.println("输入内容为:"+str);
         }
         
         //关闭IO流
         scanner.close();
     }
 }
 ​
 import java.util.Scanner;
 //不使用hasNext判断
 public class Demo3 {
     public static void main(String[] args) {
         //创建一个Scanner对象,用于接收键盘数据
         Scanner scanner = new Scanner(System.in);
         System.out.println("使用nextLine方式接收:");
         //使用nextLine方式接收
         String str=scanner.nextLine();
         System.out.println("输入内容为:"+str);
         scanner.close();
     }
 }
 ​
  1. 使用scanner.hasNextInt()和scanner.hasNextFloat()来判断是否还有输入的整数和小数数据,使用scanner.nextInt()和scanner.nextFloat()接收整数和小数

 import java.util.Scanner;
 ​
 public class Demo3 {
     public static void main(String[] args) {
         //创建一个Scanner对象,用于接收键盘数据
         Scanner scanner = new Scanner(System.in);
         int i=0;
         float f=0.0f;
         System.out.println("使用nextIn方式接收:");
         if (scanner.hasNextInt()){
             i=scanner.nextInt();
             System.out.println("输入整数为"+i);
         }else{
             System.out.println("输入数据不是整数");
         }
         scanner.close();
     }
 }
 ​
  1. 例子,输入m个double值,并计算和与平均值

 import java.util.Scanner;
 //输入m个数,并计算平均值
 public class Demo3 {
     public static void main(String[] args) {
         //创建一个Scanner对象,用于接收键盘数据
         Scanner scanner = new Scanner(System.in);
         //和
         double sum=0;
         //计算输入了多少个数字
         int m=0;
         while (scanner.hasNextDouble()){
             double x=scanner.nextDouble();
             m=m+1;
             sum=sum+x;
         }
         System.out.println(m+"个数的和为"+sum);
         System.out.println(m+"个数的平均值为"+sum/m);
         scanner.close();
     }
 }
 ​

顺序结构

  • 按照顺序一句一句执行

if选择结构

  1. if单选泽结构

    if(布尔表达式){

    //布尔式为true将执行的语句

    }

  1. if双选择结构

    if(布尔表达式){

    //布尔式为true将执行的语句

    }else{

    //布尔式为false将执行的语句

    }

  1. if多选择结构

    if(布尔表达式1){

    //布尔式1为true将执行的语句

    }else if(布尔表达式2){

    //布尔式2为true将执行的语句

    }else{

    //以上布尔式均为false将执行的语句

    }

     import java.util.Scanner;
     public class IfDemo {
         public static void main(String[] args) {
             //输入考试成绩并分级
             Scanner scanner = new Scanner(System.in);
             System.out.println("请输入成绩");
             int score=scanner.nextInt();
     ​
             if(score<=100&&score>=90){
                 System.out.println("A级");
             }else if(score<90&&score>=80){
                 System.out.println("B级");
             }else if(score<80&&score>=70){
                 System.out.println("C级");
             }else if(score<70&&score>=60){
                 System.out.println("D级");
             }else{
                 System.out.println("E级");
             }
         }
     }
  1. 嵌套的if结构

    if(布尔表达式1){

    //布尔式1为true将执行的语句

    if(布尔表达式2){

    //布尔式2为true将执行的语句

    }

    }

switch多选择语句

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

  2. switch语句中的变量类型为

    • byte、short、int或者char

    • 从Java SE7开始支持字符串String类型

  1. 语法

 switch(expression){
     case value:
         //语句
         break;//可选
     case value:
         //语句
         break;
     default://可选
         //语句
 }
  • 注意:如果没有break,会发生case穿透,即break后面的内容都会执行

 public class IfDemo {
     public static void main(String[] args) {
         char grade='C';
         
         switch(grade){
             case 'A':
                 System.out.printIn("优秀");
                 break;
             case 'B':
                 System.out.printIn("良好");
                 break;
             case 'C':
                 System.out.printIn("及格");
                 break;
             case 'D':
                 System.out.printIn("及格");
                 break;   
             default:
                 System.out.printIn("未知等级")
         }
     }
 }
  1. 代码反编译

    对于编译好的class文件可以通过IDEA反编译为java代码

    1. 找到class文件路径——file->project structure->complier out

    2. 将class文件复制到java文件目录下——右键src->openIn->explorer->找到java文件黏贴

循环结构

  • while循环

  • do……while循环

  • for循环

  • Java5后引入了一种主要用于数组的增强型for循环

  1. while循环

    while(布尔表达式){

    //循环内容

    }

  1. do……while循环(循环体至少执行一次)

    do{

    //代码语句

    }while(布尔表达式)

  1. For循环

    for(初始化;布尔表达式;更新){

    //代码语句

    }

    • for循环执行流程

      1. 执行初始化步骤(可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以是空语句)

      2. 然后检测布尔表达式

      3. 执行一次循环后,更新循环控制变量

      4. 再次检测布尔表达式

    • 打印九九乘法表

 public class Demo1 {
     public static void main(String[] args) {
         for(int i=1;i<=9;i++){
             for(int j=1;j<=i;j++){
                 System.out.print(j+"*"+i+"="+(i*j)+"\t");
             }
             System.out.println();
         }
     }
 }
  1. 增强for循环

    • 对于数组或集合的增强型for循环

    • IDEA快捷键--输入iter按回车,IDEA自动生成for-each
    • 语法

      for(声明语句:表达式)

      {

      //代码句子

      }

 public class Demo1 {
     public static void main(String[] args) {
         int [] numbers={10,20,30,40,50};//定义一个数组
         for(int x:numbers){
             System.out.println(x);
         }
     }
 }
  1. break和continue

    • break强行退出循环

    • continue退出本次循环,继续进行下次循环

 //打印三角形
 public class Demo1 {
     public static void main(String[] args) {
         for (int i=1;i<=5;i++){
             for (int j=5;j>=i;j--){
                 System.out.print(" ");
             }
             for(int j=1;j<=i;j++){
                 System.out.print("*");
             }
             for(int j=1;j<i;j++){
                 System.out.print("*");
             }
             System.out.println();
         }
     }
 }
 
posted @ 2022-04-21 16:21  ray963  阅读(27)  评论(0)    收藏  举报