zoukankan      html  css  js  c++  java
  • java控制流学习

    java流程控制学习

    Scanner对象

    概念

    1、通过Scanner类实现程序和人的交互,通过它获取到用户的输入。java.util.Scanner是java5的特征。

    我们可以通过Scanner类获取用户的输入

    2、基本语法

    Scanner s = new Scanner(System.in);
    

    3、通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。

    代码展示

    键盘输入完毕后,点击Enter表示完成输入。

    通过以下方法获取输入值。

    1、next()获取输入的数据遇到空格,则结束,空格后的值不能获取到。

    ​ 用hasNext()方法判断用户是否输入值。

    String str = scanner.next(); 程序执行后,会保持运行状态,这句代码等待用户输入值,点击Enter键结束后才会执行下一句。

    // 创建一个扫描器对象,用户接收键盘数据
    // System.in表示输入,键盘输入数据传给Scanner类,使用scanner变量引用
    Scanner scanner = new Scanner(System.in);
    
    // 判断用户是否输入字符串
    if(scanner.hasNext()) {
        // 程序执行后,会保持运行状态,这一句等待用户输入值,点击Enter结束后才会执行下一句
        String str = scanner.next();
        // 若输入12 45,结果为12,遇到空格后结束
        System.out.println("使用next结果为:" + str);
    }
            
    // 凡是属于IO(输入输出)流的类如果不关闭会一直占用资源,要养成关闭的习惯
    scanner.close();
    

    2、nextLine()方法获取点击Enter前的所有数据。

    Scanner scanner = new Scanner(System.in);
    
    // 判断用户是否输入字符串
    if(scanner.hasNextLine()) {
        String str = scanner.nextLine();
        // 若输入ab cd,结果为ab cd
        System.out.println("使用nextLine结果为:" + str);
    }
            
    scanner.close();
    

    两个方法的特征:

    next()

    1、一定要读取到有效字符后才可以结束输入。

    2、遇到空格,则结束,只能获取空格前的字符串

    3、next()不能输入带有空格的字符串

    nextLine()

    1、以Enter为结束符,可以获取到点击Enter前输入的所有字符。

    2、可以获得空格和空格之后的字符。

    Scaner进阶

    指定输入的类型。如:指定输入的数字类型有效。

    Scanner scanner = new Scanner(System.in);      
    double sum = 0;
    int n = 0;
    
    System.out.println("请输入数字类型,输入其他类型值加Enter未结束:");
    
    // 只有输入不是数字类型后才能结束while循环,
    // nextDouble只能获取到数字类型的值
    while(scanner.hasNextDouble()) {
        double a = scanner.nextDouble();
        sum = sum + a;
        n++;
    }
    
    System.out.println("输入的数值的个数为:" + n);
    System.out.println("输入值的平均值为:" + sum/n);
    
    // 凡是属于IO(输入输出)流的类如果不关闭会一直占用资源,要养成关闭的习惯
    scanner.close();
    

    顺序结构

    java的基本结构就是顺序结构,除非特别指明,否则,就按照顺序一句一句执行

    顺序结构是任何一个算法都离不开的一种基本算法结构。

    判断结构

    判断一个东西是否可行,才去执行。程序用if语句表示判断结构。

    语法

    // 布尔表达式:指结果为true或者false的表达式
    if(布尔表达式) {
        // 布尔表达式为true时执行的括号里的语句
    }
    

    双选结构

    判断后有两个结果。语法:

    if(布尔表达式) {
        // 布尔表达式为true时执行语句
    } else {
        // 布尔表达式为false时执行语句
    }
    

    多选择结构

    有多个条件判断,只要有一个条件符合,后面的判断就不会再执行。

    语法:

    if (布尔表达1) {
        // 符合布尔表达式1为true就执行这里
    } else if (布尔表达2) {
        // 符合布尔表达2为true就执行这里
    } else if (布尔表达3) {
        // 符合布尔表达式3为true就执行这里
    } else {
        // 都不符合布尔表达的1、2、3就执行这里
    }
    
    if (grade >= 90 && grade <=100) {
        System.out.println("成绩优秀!");
    } else if (grade >= 80 && grade < 90) {
        System.out.println("成绩良好!");
    } else if (grade >= 60 && grade <80) {
        System.out.println("成绩合格!");
    } else if (grade >= 0 && grade < 60) {
        System.out.println("成绩不合格!");
    } else {
        System.out.println("输入的成绩错误!");
    }
    

    嵌套if结构

    在判断语句if里面可以在使用判断语句if。

    语法

    if (布尔表达式1) {
        // 布尔表达式1位true后执行
        if (布尔表达式2) {
            // 布尔表达式2位true后执行
        }
    }
    

    Switch

    switch是多选择结构。

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

    byte、short、int或者char,

    从java SE 7 开始 switch支持字符串String类型。

    同时case标签必须是字符串常量。

    语法

    // 表达式等于value值才会执行相应的语句
    switch (表达式) {
        case value1 :
            // 表达式等于value1时执行这里的语句
            
            // break:执行后结束直接跳出,不会再执行后面的代码。
            break;
        case value2 :
            // 表达式等于value1时执行这里的语句
            break;
        default :
            // 表达式都不等于前面的value值时,执行这里
    }
    
    char grade = 'B';
    switch (grade) {
        case 'A':
            System.out.println("成绩优秀!");
            break;
        case 'B':
            System.out.println("成绩良好!");
            break;
        case 'C':
            System.out.println("成绩及格!");
            break;
        default :
            System.out.println("不在成绩值的范围!");
    }
    

    switch中判断是否相当的本质还是通过数值去判断。字符串在unicode表中都是对应的数字,每个对象都有hascode(数字组成)值,用来与value的hascode比较,相等就执行该value下的语句。

    java编译 java --- > class(字节码文件) --- > 反编译(IDEA)

    查看java后生成的class文件,通过IDEA反编译,与原来java文件对比。

    1、右键选择Project Structre

    2、找到生成class文件的路径

    3、找到class文件(我这里实在Demo03写代码,所以我选择复制Demo03.class)进行复制

    找到IDEA中当前文件的所在目录

    1、选中文件右键

    2、选择Show in Explorer 打开该java文件的目录

    3、将class文件复制粘贴

    字符的本质还是数值,最终的判断还是通过数值进行判断。

    循环结构

    While

    1、while是最基本的循环,它的语法为:

    while(布尔表达式) {
        // 布尔表达式为true执行循环内容
    }
    

    2、只要布尔表达式为true,循环就会一直执行下去。

    3、我们大多数情况下都会让循环停止,需要一个让表达式为false的方式结束循环。

    用while计算1~100

    int sum = 0;
    int i = 1;
    
    // 只要i小于等于100就会一直执行while里面的语句
    while(i <= 100) {
        sum = sum + i;
        i++;
    }
    // 当while中i大于100就会结束while循环,执行下一句代码。
    System.out.println("结构和为:" + sum);
    

    do~while

    1、do...while循环和while循环相似,不同的是do...while循环至少会执行一次。

    do {
        // 执行代码
    } while(布尔表达式);
    

    While和do...while的区别

    1、While先判断后执行,do...while先执行后判断。

    2、do...while保证循环至少执行一次。

    for循环

    1、for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。语法如下:

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

    案列:输出1~100的整数和

    int sum = 0;
    for (int i = 1;i <= 100;i++) {
        sum = sum + i;
    }
    

    练习1:输出1~100之间的奇数和与偶数和

    int odd = 0;  // 奇数
    int even = 0; // 偶数
    for (int i = 1;i <= 100;i++) {
        if (i%2 == 0) {
            even = even +i;
        } else {
            odd = odd +i;
        }
    }
    
    System.out.println("奇数和为:" + odd);
    System.out.println("偶数和为:" + even);
    

    练习2:输出100内能被5整除的值,每行输出3个值

    for (int i=1;i <= 100;i++) {
        if(i%5 == 0) {
            System.out.print(i + " ");
        }
        if(i%(5*3) == 0) {
            System.out.println();
        }
    }
    

    练习3:打印九成九乘法表

    // 练习:打印九成九乘法表
    // 第一行打印1*1=1,结束后分行。
    // 第二行打印1*2=2,2*2=3,结束后分行。
    // 第三行...,
    for (int i = 1;i <= 9;i++) {
        for (int j = 1;j <= i; j++) {
            System.out.print(j + "*" + i + "=" + (j*i) + "	");
        }
        System.out.println();
    }
    

    练习4:打印三角形

    // 打印三角形
    for (int i = 1;i <= 5;i++) {
        for (int j = 5;j >= i;j--) {
            System.out.print(" ");
        }
        for (int n = 1;n <= i;n++) {
            System.out.print("*");
        }
        for (int m = 1;m < i;m++) {
            System.out.print("*");
        }
        System.out.println();
    }
    

    增强for循环

    1、java5引入一种主要用于数组或集合的增强for循环。语法如下

    for (声明语句 : 表达式) {
        // 执行代码
    }
    

    2、声明语句:声明新的局部变量,变量类型必须和数组元素的类型匹配。作用域(即可以使用的范围)限定在循环语句块(即在{}的代码),其值与此时的数组元素值相等。

    3、表达式:要访问的数组名,或者返回值为数组的方法。

    int[] num = {10,20,30,40,50,60};
    
    // 数组num的值会一个一个的传个a,全部传完后结束循环
    for (int a : num) {
        System.out.println(a);
    }
    System.out.println("=====================");
    // 相当于
    int a;
    for (int i = 0;i < num.length;i++) {
        a = num[i];
        System.out.println(a);
    }
    

    break和continue

    1、break在任何循环语句的主题部分,break用于强制退出结束循环。(主要用于switch中)

    2、continu语句用于循环语句体中,用于终止当前这一轮的循环,但循环没有结束,会执行下一轮的循环。

    int i = 0;
    while (i < 5) {
        i++;
        if (i == 3) {
            // 结束while循环,跳出执行下一句
            break;
        }
        System.out.print(i + " ");
    }
    //  结果为1 2
    
    int j = 0;
    while (j < 5) {
        j++;
        if (j == 3) {
            // 直接结束本次循环,会在执行下一个循环
            continue;
        }
        System.out.print(j + " ");
    }
    // 结果为1 2 4 5
    
    

    学习观看的视频为:狂神说java零基础学习

  • 相关阅读:
    Selenium环境搭建
    系统测试用例评审checklist
    软件测试入门
    App测试方法总结
    好东西并查集
    自己编写一个数组去掉重复元素的函数
    杭电OJ BestCoder28期1001Missing number问题(小技巧偏移法)
    介绍一个二次排序的小技巧(best coder27期1001jump jump jump)
    ntohs的一个简单实现(将网络流中用两个字节16进制表示的资源数(如DNS)和长度转换为整形)
    一个节省空间的小技巧
  • 原文地址:https://www.cnblogs.com/zhouyongyin/p/12677781.html
Copyright © 2011-2022 走看看