Java流程控制【感谢狂神说Java】

2021/5/24 12:27:16

本文主要是介绍Java流程控制【感谢狂神说Java】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java流程控制

Scanner对象

  1. java.util.Scanner是Java5的新特性,用来获取用户输入

  2. Scanner s = new Scanner(System.in);
    // 获取输入的字符串
    next();
    nextLine();
    // 判断是否还有输入的数据
    hasNext();
    hasNextLine();
  3. // 创建一个扫描器对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);  //hello world
    System.out.println("输入数据:");
    // 判断用户有没有输入数据
    if (scanner.hasNext()){  // 这里可以去掉if判断
        // 使用next方法接收
        String str = scanner.next();
        System.out.println("输出内容:"+str);  // hello
        // 使用nextLine方法接收
        String strLine = scanner.nextLine();
        System.out.println("输出内容:"+strLine);  //world
    }
    // 凡是IO流的类如果不关闭会一直占用资源
    scanner.close();
    
  4. Scanner scanner = new Scanner(System.in);
    int i = 0;
    float f = 0.0f;
    // 需要输入两次
    if(scanner.hasNextInt()){
        i = scanner.nextInt();
        System.out.println("输出内容:"+ i);
    }
    if(scanner.hasNextFloat()){
        i = scanner.nextFloat();
        System.out.println("输出内容:"+ f);
    }
    scanner.close();
  5. 案例

    // 输入多个数字,并求和与平均数,每输入一个数字回车确认,通过输入非数字执行结果
    // 创建一个扫描器对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入:");
    double sum = 0;
    int n = 0;
    ​
    // 判断用户有没有输入数字
    while (scanner.hasNextDouble()){
        n++;
        // 使用nextInt方法接收
        int i = scanner.nextInt();
        sum = sum + i;
    }
    System.out.println("输出总和:"+sum);
    // double aver = sum/n;
    // System.out.println("输出内容:"+ aver);
    System.out.println("输出内容:"+ (sum/n));
    // 凡是IO流的类如果不关闭会一直占用资源
    scanner.close();

顺序结构

除非特别指明,否则由上往下依次执行

选择结构

  1. if(布尔表达式){
        // 为true则执行
        // s.equals("hello")判断字符串s是否等于hello
    }
  2. if(布尔表达式){
        // 为true则执行
    }else{
        // 为false则执行
    }
  3. if(布尔表达式1){
        // 表达式1为true则执行
    }else if(布尔表达式2){
        // 表达式2为true则执行
    }else if(布尔表达式3){
        // 表达式3为true则执行
    }else if(布尔表达式4){
        // 表达式4为true则执行
    }else{
        // 表达式都为false执行
    }
  4. if(布尔表达式1){
        if(布尔表达式2){
            
        }
    }
  5. switch(expression){
        case value1 :
            // 语句
            break;  // 可选
        case value2 :
            // 语句
            break;  // 可选
        case value3 :
            // 语句
            break;  // 可选
        default :  // 可选
            // 语句
    }
    • 判断表达式expression的值,执行相等的分支(case),都不相等执行default

    • 判断类型可以是byte, short, int, char, String【从Java7开始】

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

    • 如果没有break则把判断成功的分支的下面的分支全部输出【case穿透现象】

    • 反编译:java->class(字节码文件)--反编译(IDEA)-->java。每一个字符串对应一个hashcode

    • 查看class文件内容【用IDEA作为反编译工具】:打开项目文件目录open in explorer,把class文件拷贝过来,在IDEA中打开【不能直接拖进来,无法读取class文件】

  6. 好的程序员要学会看源码

循环结构

  1. while(布尔表达式){
        //循环内容
    }
    // 死循环
    while(true){
        // 等待客户端连接
        // 定时检查
        // ……
    }
  2. 即使不满足条件,也要求程序执行一次

    do {
        // 代码语句
    }while(布尔表达式)

    do-while与while的区别:

    • while先判断后执行,do-while先执行后判断

    • do-while至少执行循环体一次

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

    for(初始化; 布尔表达式; 更新){
        // 代码语句
    }
    ​
    /*
    for循环说明:
    1.最先执行初始化步骤,可以声明一种类型,蛋壳初始化一个或多个循环控制变量,也可以是空语句
    2.检测布尔表达式的值,true,执行循环体,false,终止循环,执行循环体后面的语句
    3.执行一次循环后,更新循环控制变量
    4.再次检查布尔表达式
    */
    for(int i=1; i<=100; i++){
        System.out.println("i");
    }

    print和println的区别:

    print输出后不换行,在之后无限加

    println输出后换行

// 打印99乘法表
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();
}
  1. 增强for循环:jdk5引入,用于数组或集合

for (声明语句:表达式){
    // 代码
}
​
int[] n = {10,20,30};
for (int x:n){
    // 新的局部变量x必须和数据中的元素类型匹配,其作用域限定在循环语句块,其值与此时的数组元素的值相等
    // 表达式:要访问的数组名或者返回数组的方法
    System.out.println(x);
}
  1. break、continue、goto

  • break:用于强制退出循环,不执行剩余的循环

  • continue:用于终止某次循环,进入下一次的循环判定

  • goto:Java中不存在goto,但是可以使用带标签的break和continue来实现

    • 唯一的用处是在循环语句之前

    • 在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,若同标签使用,它们就会中断到存在标签的地方

    // 标签:指后面跟一个冒号的标识符,如label:
    // 质数:大于1的自然数中,除了1和它本身意外不再有其他因数的自然数
    int count = 0;
    // 不建议使用
    outer:for (int i = 101; i <= 150; i++) {
        for (int j = 2; j < i/2; j++) {
            if (i % j == 0){
                continue outer;
            }
        }
        System.out.println(i);
    }
// 打印三角形
for (int i = 1; i <=5 ; i++) {
    // 打印三角形左边的直角三角形空白,用空格完成占位
    for (int j = 5; j >= i; j--) {
        System.out.print(" ");
    }
    // 下面两个for循环每次打印一个直角三角形
    for (int j = 1; j <= i; j++) {
        System.out.print("*");
    }
    for (int j = 1; j < i; j++) {
        System.out.print("*");
    }
    // 换行
    System.out.println();
}

 



这篇关于Java流程控制【感谢狂神说Java】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程