Java流程控制

Java流程控制

1.用户交互 Scanner

Java给用户提供了一个工具类,可以获取用户的输入。Java.util.Scanner 是 Java5 的新特征,我们可以通过Scanner类来获取用户的输入

  • 基本语法

 Scanner s = new Scanner(System.in)
  • 通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用hasNext() 与hasNextLine() 判断是否还有输入的数据

  • next() 与 nextLine() 区别

    • next():

      • 读取有效字符后才可以结束输入

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

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

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

    • nextLine():

      • 以 Enter 为结束符,即返回 输入回车前的所有字符

      • 可以获得空白

 import java.util.Scanner;
 // 用户交互 Scanner
 public class Demo01 {
     public static void main(String[] args) {
         
         // 创建一个扫描器对象,用于接收键盘数据
         Scanner scanner = new Scanner(System.in);
         System.out.println("使用next方式接收: ");
         
         // 采用 hasNext 判断用户有没有输入字符串
         if (scanner.hasNext()){
             //使用 next方式接收用户输入的字符串
             String str = scanner.next();    //程序会等待用户输入完毕
             System.out.println("输入的内容为:"+str);
         }
         //凡是属于 IO流 的类 如果不关闭会一直占用资源,要养成良好的习惯用完关掉
         scanner.close();
     }
 }
 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;
         
         //通过循环判断是否还有输入,并在里面对每一次进行求和统计
         while(scanner.hasNextDouble()){
             double x = scanner.nextDouble();
             m++;
             sum += x;
             System.out.println("你输入了第"+m+"个数据,当前结果sum="+sum);
         }
         double aver = sum/m;
         System.out.println(m+"个数的平均数是:"+ aver);
         scanner.close();
     }
 }

2.顺序结构

顺序结构是最简单的算法结构,语句与语句之间是按从上到下顺序执行的。

3.选择结构

  • if 单选择结构

 // 语法格式 
 if(布尔表达式){
 //若布尔表达式为 true 将执行的语句
 }
 import java.util.Scanner;
 ​
 // 流程控制 ————————》选择结构
 public class Demo01 {
     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(布尔表达式){
     //若布尔表达式值为True
 }else{
     //若布尔表达式值为False
 }
  • if 多选择结构

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

 if(布尔表达式1){
     //若布尔表达式1值为true执行
 }else if(布尔表达式2){
     //若布尔表达式2值为true执行
 }else if(布尔表达式3){
     //若布尔表达式3值为true执行
 }else{
     //若以上布尔表达式都不为true执行
 }
  • 嵌套的 if 结构

 if (布尔表达式1){
      //若布尔表达式1值 为true执行代码
     if(布尔表达式2){
      //若布尔表达式2值 为true执行代码  
     }
 }
  • switch case 多选择结构

    • 用于判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

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

      • byte 、short int 或者 char

      • 从 JavaSE7 开始 switch 支持字符串String类型了

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

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

public class SwitchDemo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的结果:");
        String s = scanner.nextLine();
        // case 穿透    switch 匹配一个具体的值

        // 反编译  Java文件----------class(字节码文件)---------反编译(IDEA)
        switch(s){
            case "apple":
                System.out.println("select apple");
                break;
            case"pear ":
                System.out.println("select pear");
                break;
            default:
                System.out.println("no choice");
        }
         scanner.close();
    }
}

4.循环结构

  • While 循环 (先判断 后执行)

// 输出1~100之间的数  并求和
public class WhileDemo01 {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        while(i<=100){
            System.out.println(i);
            sum+=i;
            i++;
        }
        System.out.println(sum);
    }
}
  • DoWhile 循环(先执行 后判断)

    • do....while 循环和 while 循环类似,不同的是:do....while循环至少执行一次。

    • 即:即使不满足条件也会执行一次。

do{
    //代码块
}while(expression);
  • For 循环

    • for循环语句 是 支持迭代的一种通用结构,是最有效、最灵活的循环结构

for(初始化;布尔表达式;更新){
    //代码语句
}

// println	输出完 会换行
// print	输出完 不会换行
 // 练习1: 计算 0~100之间的奇数和偶数的和
public class ForDemo01 {
    public static void main(String[] args) {
        int oddSum = 0;
        int evenSum = 0;
        for (int i = 0; i < 100; i++) {
            if(i % 2 == 0){
                // i 为偶数
                evenSum += i;
            }else{
                // i 为奇数
                oddSum += i;
            }
        }
        System.out.println("奇数和为:"+oddSum);
        System.out.println("偶数和为:"+evenSum);
    }
}
// 练习2 :用 while 或 for 循环输出 1-1000之间能被 5整除的数,并且每行输出3个
public class ForDemo02 {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 1; i <= 1000; i++) {
            if(i % 5 == 0){
                System.out.print(i +"\t");	//输出后不换行,每个输出隔一个tab
                if(i % (5*3) == 0){     //  每行3个后换行
                    System.out.println();
                }
                
                /*
                count++;
                if(count >= 3){
                    System.out.println();
                    count = 0;
                }
                 */
            }
        }

    }
}
//  打印 九九乘法表
public class ForDemo03 {
    public static void main(String[] args) {
        // 1.先打印第一列;
        // 2.去掉重复项 j <= i; 
        // 3.调整样式
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+ j +"="+(i*j)+"\t");
            }
            System.out.println();
        }
    }
}
  • Java5 中引入了一种主要用于 数组的增强型 for 循环

for(声明语句:表达式){
    // 代码句子
}
public class ForDemo04 {
    public static void main(String[] args) {
        //主要用于 数组的增强型 for 循环
        int[] numbers = {10,20,30,40,66,88};
        //遍历数组
        for(int x : numbers){   //把 numbers数组中 每一项遍历出来赋值给 x
            System.out.print(x + "\t");
        }
    }
}

5.break & continue

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

  • continue :用于循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断

6.练习

public class TestDemo01 {
    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();
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值