Java流程控制

用户交互Scanner

  1. java.util.Scanner 是 java5 的新特征,通过Scanner类来获取用户的输入。

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

  3. Scanner类中获取输入的字符串方法有 : next( ) 、 nextLine( ) 。

    next( ) : 以空白作为结束符,不可以得到带有空格的字符串。

    nextLine( ) : 以Enter作为结束符,可以读取空白格。
    在这里插入图片描述
    在这里插入图片描述

  4. Scanner类中判断是否还有输入数据的方法有: hasNext( ) 、 hasNextLine( ) 、hasNextInt()、hasNextFloat()等。

    package com.Hrstudy.scanner;
    
    import java.util.Scanner;
    
    public class demo09 {
        public static void main(String[] args) {
            //创建一个扫描器对象,用于接收键盘数据
            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();
        }
    }
    
  • 注意: 养成好习惯,创建完主函数,就写上关闭scanner资源的语句:

    scanner.close( );

  1. 案例

    package com.Hrstudy.scanner;
    
    import java.util.Scanner;
    
    public class demo04 {
        public static void main(String[] args) {
            //任务需求:  我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果;
            
            Scanner scanner = new Scanner(System.in);
            
            //和
            double sum = 0 ;
            //计算输入了多少个数字
            int m = 0;
            System.out.println("请输入数字:");
            //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
            while(scanner.hasNextDouble()){
                double x = scanner.nextDouble();
                m++;
                sum += x;
                System.out.println("你已经输入了"+m+"个数据,现在的总和为:"+sum);
            }
            System.out.println(m+"个数的和为:"+sum);
            System.out.println(m+"个数的平均数为:"+(sum/m));
            scanner.close();
        }
    }
    

顺序结构

  1. 定义:就是JAVA中的基本结构,按照顺序一句一句执行
  2. 结构:
    在这里插入图片描述

选择结构

if单选择结构

  • 语法格式:

    if(布尔表达式){

    ​ //如果布尔表达式为true执行的语句

    }

  • 图示
    在这里插入图片描述

if双选择结构

  • 语法格式

    if(布尔表达式){

    ​ //如果布尔表达式的值为true执行

    }else{

    ​ //如果布尔表达式的值为false执行

    }

  • 图示

在这里插入图片描述

嵌套的if结构

  • 语法结构

    if(布尔表达式 1){

    ​ //如果布尔表达式 1 值为true执行代码

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

    ​ //如果布尔表达式 2 值为true执行代码

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

    ​ //如果布尔表达式 3 值为true执行代码

    }else{

    ​ //如果以上布尔表达式都不为true执行代码

    }

  • 图示
    在这里插入图片描述

  • 注意:

    • if 语句至多有一个 else 语句,else 语句在所有的 else if 语句之后。

    • if 语句可以有若干个else if 语句,它们必须在 else 语句之前。

    • 只要其中一个 else if 语句检测为true后,其它的 else if 以及 else 语句都将跳过执行。

switch多选择结构

  • 语法结构

    switch(变量){

    ​ case value1 :

    ​ //语句

    ​ break;//可选

    ​ case value2 :

    ​ //语句

    ​ break;

    ​ //你可以有任意数量的case

    ​ default : //可选

    ​ //语句

    }

  • 注意

    • switch语句中的变量类型可以是byte、short、int、char、String。
    • case 标签必须为字符串常量或字面量。

循环结构

while 循环

  1. 格式:

    while (布尔表达式){

    ​ //循环体

    }

do … while 循环

  1. 格式:

    do {

    ​ //循环体

    } while (布尔表达式);

  2. while 和 do…while的区别

    • while 先判断后执行,do…while 是先执行后判断
    • do…while 总是保证循环体至少执行一次

for 循环

  1. 格式:

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

    ​ //循环体

    }

  2. for循环注意点.
    (1) for循环的次数是在执行前就确定的。
    (2) 可以初始化一个或者多个循环控制变量,也可以是空语句。

  3. 案例

    package com.Hrstudy.struct;
    
    public class fordemo01 {
        public static void main(String[] args) {
            //用for循环输出1-1000之间被5整除的书,并且每行输出3个
            for(int i = 0 ; i <= 1000 ; i++) {
                if(i%5==0){
                    System.out.println(i+"\t");
                }
                if(i%(5*3)==0){
                    System.out.println("\n");
                }
                //println : 输出完换行
                // print : 输出完不换行
            }
    
        }
    }
    

增强for循环

  1. 格式

    for( 数据类型 变量名 : 遍历的目标) {

    ​ //数据类型 变量名 : 声明一个变量用来接收遍历目标遍历后的元素
    }

break&continue

  1. break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(在switch语句中也有应用)

  2. continue语句用在循环语句体中,用于终止某次循环过程,即跳出循环体中未执行的语句,接着进行下一次是否执行循环的判定

  3. 代码演示

    package com.Hrstudy.struct;
    
    public class breakDemo01 {
        public static void main(String[] args) {
            //break 在任何循环语句的主体部分,均可用break控制循环的流程
            //break 用于强行退出循环,不执行循环中剩余的语句
            //continue 语句在用于循环语句体重,用于终止某次循环过程,即跳过循环体中未执行的语句,接着进行下一次是否执行循环的判定
            int i = 0;
            while (i<100){
                i++;
                if(i%10 == 0){
                    System.out.println();
                    continue;
                }
                System.out.print(i);
    
            }
        }
    }
    
  4. goto关键字(没必要掌握,知道即可)
    在这里插入图片描述

代码演示:

package com.Hrstudy.struct;

public class gotoDemo01 {
    public static void main(String[] args) {
        //打印101-150之间所有的质数
        //质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
        outer:for(int i=101;i<=150;i++){    //outer 就是一个标记
            for(int j = 2;j<i/2;j++ ){
                if(i % j == 0){
                    continue outer;     //说明该数字不是质数,结束本次循环,跳至outer
                }
            }
            System.out.println(i + " ");
        }

    }
}

拓展

打印三角形

package com.Hrstudy.struct;

public class TestDemo {
    public static void main(String[] args) {
        //打印三角形 5行
        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();
        }

    }
}
         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();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值