java流程控制

java流程控制

用户交互Scanner

Scanner基本使用

java.util.Scanner,可以通过Scanner类来获得用户的输入

  • 基本语法:

    Scanner scanner = new Scanner(System.in);
    
  • 通过Scanner类的next()与nextLine()可以获得用户输入的字符串,读取前需要通过hasNext()与hasNextLine()判断是否还有输入的数据

    • next():

      读取到有效字符之后才能结束输入,有效字符之后的空白会将其作为结束符号,有效字符之前的空白不会显示,即next()不会显示空白

      package com.yushuo.scanner;
      
      import java.util.Scanner;
      
      public class Demo01 {
      
          public static void main(String[] args) {
      
              //创建一个扫描器对象用以接收键盘输入数据
              Scanner scanner = new Scanner(System.in);
      
              //使用next方式接收
              System.out.println("使用next方式接收:");
      
              //判断用户有没有输入字符串
              if (scanner.hasNext()){//判断条件为scanner.hasNext() == true
      
                  //使用next方式接收
                  String str = scanner.next();
                  System.out.println("输出的内容为:" + str);
              }
      
              //凡是属于IO流的类,如果不关会一直占用资源,因此养成良好习惯,用完就关
              scanner.close();
          }
      }
      
    • nextLine():

      以回车键为结束符,会显示之前的所有内容,包括空白。

      使用较为方便,因此比next()常用。

      package com.yushuo.scanner;
      
      import java.util.Scanner;
      
      public class Demo02 {
      
          public static void main(String[] args) {
      
              //创建一个扫描器对象用以接收键盘输入数据
              Scanner scanner = new Scanner(System.in);
      
              //使用next方式接收
              System.out.println("使用nextLine方式接收:");
      
              //判断用户有没有输入字符串
              if (scanner.hasNextLine()){//判断条件为scanner.hasNextLine() == true
      
                  //使用nextLine方式接收
                  String str = scanner.nextLine();
                  System.out.println("输出的内容为:" + str);
              }
      
              //凡是属于IO流的类,如果不关会一直占用资源,因此养成良好习惯,用完就关
              scanner.close();
          }
      }
      
      package com.yushuo.scanner;
      
      import java.util.Scanner;
      
      public class Demo03 {
      
          //可以不加判断,使用nextLine()
          public static void main(String[] args) {
              //创建一个扫描器对象用以接收键盘输入数据
              Scanner scanner = new Scanner(System.in);
      
              //使用next方式接收
              System.out.println("请输入数据使用:");
      
              //使用nextLine方式接收
              String str = scanner.nextLine();
              System.out.println("输出的内容为:" + str);
      
              //凡是属于IO流的类,如果不关会一直占用资源,因此养成良好习惯,用完就关
              scanner.close();
          }
      }
      

Scanner进阶使用

  • 输入整数hasNextInt()与nextInt()

    //接受整数数据
            System.out.println("请输入整数:");
            if (scanner.hasNextInt()){
                i = scanner.nextInt();
                System.out.println("整数数据为:" + i);
            }else {
                System.out.println("输入的不是整数!");
            }
    
  • 输入小数数据hasNextFloat()与nextFloat(),也可以是double

    //接受小数数据
            System.out.println("请输入小数:");
            if (scanner.hasNextFloat()){
                f = scanner.nextFloat();
                System.out.println("小数数据为:" + f);
            }else {
                System.out.println("输入的不是小数!");
            }
    
  • 事例练习:输入一些数字,求和与平均值

    package com.yushuo.scanner;
    
    import java.util.Scanner;
    
    public class Demo05 {
        public static void main(String[] args) {
            /**
             * 练习:
             * 输入多个数字,求其总和与平均数
             * 每输入一个数字用回车确认,以非数字结束输入并输出结果
             */
            Scanner scanner = new Scanner(System.in);
            int n = 0;//记录输入的数字个数
            float s = 0.0f,f;//s是所有数字综合,f是每个输入的数字
    
            System.out.println("请输入数字:");
            while (scanner.hasNextFloat()){
                f = scanner.nextFloat();
                s = s + f;
                n++;
            }
            System.out.println("输入数字的总和为:" + s);
            System.out.println("输入数字的平均数为:" + s/n);
    
            scanner.close();
        }
    }
    

结构

顺序结构

普通的结构,一步一步从上往下执行。

选择结构

if选择结构
  • if单选择结构

    if(boolean表达式){

    如果为true,执行内容,否则不执行

    }

    package com.yushuo.structure;
    
    import java.util.Scanner;
    
    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双选择结构

    if(boolean表达式){

    如果为true,执行此内容

    }else{

    如果为false,执行此内容

    }

    package com.yushuo.structure;
    
    import java.util.Scanner;
    
    public class IfDemo02 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            //输入成绩,判断是否及格
            int score;//成绩
            System.out.println("请输入成绩:");
            
            score = scanner.nextInt();
            if (score >= 60){
                System.out.println("及格");
            }else{
                System.out.println("不及格");
            }
    
            scanner.close();
        }
    }
    
  • if多选择结构

    if(boolean表达式1){

    如果为true,执行内容

    }else if(boolean表达式2){//可以加很多个else if

    如果为true,执行内容

    }else{

    如果前面都为false,执行内容

    }

    package com.yushuo.structure;
    
    import java.util.Scanner;
    
    public class IfDemo03 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            //输入成绩,判断及格与优秀
            int score;//成绩
            System.out.println("请输入成绩:");
    
            score = scanner.nextInt();
            if (score >= 85){
                System.out.println("优秀");
            }else if (score >= 60 && score < 85){
                System.out.println("及格");
            }else {
                System.out.println("不及格");
            }
    
            scanner.close();
        }
    }
    
  • if的嵌套结构

    可以在一个if里面添加if

    if(boolean表达式1){

    如果为true,执行内容,否则不执行

    ​ if(boolean表达式2){

    ​ }

    }

switch选择结构

判断一个变量与一系列值中的某个是否相等,执行相等值的那个分支

switch(expression){
	//expression与value比较
    //可以是byte,int,short,char,String(jdk7以后)
    //value必须是字符串常量或字面量
    case value1:
        //语句
        break;//可选
    case value2:
        //语句
        break;//可选  
    default://可选
        //语句
}

使用举例

package com.yushuo.structure;

import java.util.Scanner;

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

        int i;
        System.out.println("请输入1到4的整数:");
        i = scanner.nextInt();
        /**
         * 输入的数进行比较,必须使用break,否则后面的将继续进行
         * 例如:
         * 输入1,满足case 1,随后由于没有break,会把下面的全部执行
         */
        switch (i){
            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("非法输入!");
        }

        scanner.close();
    }
}
  • 反编译——IEDA打开.calss文件所在目录,将文件复制到包中,双击打开即可看到反编译后的文件

循环结构

while循环结构
语法
while(boolean){
    //循环执行内容直至为假
}
//举例
package com.yushuo.structure;

public class WhileDemo01 {
    public static void main(String[] args) {
        //输出1到10
        int i = 0;
        while (i<10){
            i++;
            System.out.println(i);
        }
    }
}
  • while要避免无限循环
dowhile循环结构
  • 与while不同,dowhile先执行一次循环内容,再判断循环条件
package com.yushuo.structure;

public class DoWhileDemo01 {
    public static void main(String[] args) {
        //1到100求和
        int i = 0,sum = 0;
        do {
            i++;
            sum = sum + i;
        }while (i<100);
        System.out.println(sum);
    }
}
for循环
  • for循环是最有效、最灵活的循环结构
//语法
for(初始条件;判断条件;更新){
}

package com.yushuo.structure;

public class ForDemo01 {
    public static void main(String[] args) {
        //1到100求和
        int sum = 0;
        /**
         * 可以通过输入100.for回车得到
         * 执行顺序:
         * 先进行初始化,初始化可以为空
         * 随后进行判断条件
         * 执行一次循环以后进行一次更新,然后再进行判断
         * 重复上一行
         */
        for (int i = 0;i <= 100;i++){
            sum = sum + i;
        }
        System.out.println(sum);
    }
}
增强for循环
  • 主要用于数组和集合
package com.yushuo.structure;

public class ForDemo05 {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};
        /**
         * 遍历数组numbers里面的每个元素,赋值给x
         */
        for (int x:numbers){
            System.out.println(x);
        }
    }
}

break与continue

  • break用以强制退出循环

    package com.yushuo.structure;
    
    public class BreakDemo {
        public static void main(String[] args) {
            int sum = 0;
            /**
             * 0到30,求和
             */
            for (int i = 0; i < 100; i++) {
                if (i > 30){
                    break;
                }
                sum += i;
            }
            System.out.println(sum);
        }
    }
    
  • continue用以强制退出某次循环

    package com.yushuo.structure;
    
    public class ContinueDemo {
        public static void main(String[] args) {
            int sum = 0;
            /**
             * 0到29,31到100求和
             */
            for (int i = 0; i < 100; i++) {
                if (i == 30){
                    continue;
                }
                sum += i;
            }
            System.out.println(sum);
        }
    }
    

练习:打印三角形

package com.yushuo.structure;

public class TestDemo {
    public static void main(String[] args) {
        int j;
        //打印三角形,5行,每行*的个数为1、3、5、7、9
        for (int i = 0; i < 5; i++) {
            for (j = 0; j < 9; j++){
                if (j < (4-i) || j > (4+i)){
                    System.out.print(" ");
                }else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值