• Java学习笔记流程控制


    流程控制

    Java流程控制01:用户交互Scanner

    tip:java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。

    基本语法:

    Scanner scanner = new Scanner(System.in);
    

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

    package com.maynerd.scanner;
    
    import java.util.Scanner;
    
    public class Demo01 {
        public static void main(String[] args) {
    
            //创建一个扫描器对象,用于接收键盘数据
            Scanner scanner = new Scanner(System.in);
            System.out.println("使用next方式接收:");
    
            //判断用户有没有输入字符串
            if(scanner.hasNext()){
    //            String str = scanner.next();
                String str = scanner.nextLine();
                System.out.println("输出的内容为:" + str);
            }
    
            //凡是属于IO流的量需要把它关闭,避免占用资源
            scanner.close();
        }
    }
    
    package com.maynerd.scanner;
    
    import java.util.Scanner;
    
    public class Demo03 {
        public static void main(String[] args) {
    
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入数据:");
    
            String str = scanner.nextLine();
            System.out.println("输出的内容为:" + str);
    
            scanner.close();
        }
    }
    

    总结:主要讲了两种使用Scanner类的两种输入的用法。

    Java流程控制02:Scanner进阶使用

    tip:摁住ctrl点击大写的类Scanner进入类的源码查看。

    使用scanner.hasNextInt()和scanner.hasNextFloat()的进阶用法,用来判断接收的数字,再用scanner.nextInt()和scanner.nextFloat()接收并输出,代码如下。

    package com.maynerd.scanner;
    
    import java.util.Scanner;
    
    public class Demo04 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            int i = 0;
            float f = 0.0f;
            System.out.println("请输入整数:");
    
            if(scanner.hasNextInt()){
                i = scanner.nextInt();
                System.out.println("整数数据" + i);
            }else{
                System.out.println("输入的不是整数数据");
            }
    
            System.out.println("请输入小数:");
            if(scanner.hasNextFloat()){
                f = scanner.nextFloat();
                System.out.println("小数数据" + f);
            }else{
                System.out.println("输入的不是小数数据");
            }
    
    				scanner.close();
        }
    }
    

    输入多个数字,求他的总和和平均数,通过输入非数字结束输入并换行输出结果,代码如下。

    package com.maynerd.scanner;
    
    import java.util.Scanner;
    
    public class Demo05 {
        public static void main(String[] args) {
            //我们要输入多个数字,求他的总和和平均数,通过输入非数字结束输入并换行输出结果
            Scanner scanner = new Scanner(System.in);
    
            //和
            double sum = 0;
            //计算输入了多少个数字
            int m = 0;
    
            //通过while循环判断是否还有输入,并在里面对每一次进行求和统计
            while(scanner.hasNextDouble()){
                double x = scanner.nextDouble();
                m++;
                sum += x;
            }
    
            System.out.println(m + "个数的和为:" + sum);
            System.out.println(m + "个数的平均值为:" + (sum/m));
    
            scanner.close();
        }
    }
    

    Java流程控制03:顺序结构

    1. Java的基本结构就是顺序结构,除非特别指明,否则就是一句一句往下执行。
    2. 顺序结构是最简单的算法结构。
    3. 它是任何算法都离不开的一种结构。

    Java流程控制04:if选择结构

    if单选择结构、if双选择结构、if多选择结构、嵌套的if结构、switch多选择结构。

    基本语法1:

    if(布尔表达式){
    			//如果布尔表达式为true将执行的语句
    }
    

    判断字符串是否为“Hello”,代码如下。

    package com.maynerd.struct;
    
    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();
        }
    }
    

    基本语法2:

    if(布尔表达式){
    			//如果布尔表达式的值为true
    }else{
    			//如果布尔表达式的值为false
    }
    

    判断考试分数,多于60就是及格,小于60就是不及格。

    package com.maynerd.struct;
    
    import java.util.Scanner;
    
    public class IfDemo02 {
        public static void  main(String[] args) {
            //考试分数60就是及格,小于60分就不及格
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入数据:");
            int score = scanner.nextInt();
    
            if(score >= 60){
                System.out.println("及格");
            }else{
                System.out.println("不及格");
            }
    
            scanner.close();
        }
    }
    

    基本语法3:

    if(布尔表达式1){
    			//如果布尔表达式1的值为true
    }else if(布尔表达式1){
    			//如果布尔表达式2的值为true
    }else if(布尔表达式2){
    			//如果布尔表达式2的值为true
    }else if(布尔表达式3){
    			//如果布尔表达式3的值为true
    }else{
    			//如果以上表达式都不为true执行该代码
    }
    

    判断考试分数,并且分级,代码如下。

    package com.maynerd.struct;
    
    import java.util.Scanner;
    
    public class IfDemo03 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入数据:");
            int score = scanner.nextInt();
    
            if(score == 100){
                System.out.println("恭喜满分");
            }else if(score < 100 && score >= 90){
                System.out.println("A级");
            }else if(score < 90 && score >= 80){
                System.out.println("B级");
            }else if(score < 80 && score >= 70){
                System.out.println("C级");
            }else if(score < 70 && score >= 60){
                System.out.println("D级");
            }else if(score < 60 && score >= 50){
                System.out.println("不及格!");
            }else{
                System.out.println("成绩不合法!");
            }
    
            scanner.close();
        }
    }
    

    基本语法3:

    if(布尔表达式1){
    			//如果布尔表达式1的值为true执行代码
    			if(布尔表达式 2){
    						//如果布尔表达式2的值为true执行代码
    			}
    }
    

    思考:用if的嵌套结构实现1~100查找某个数。

    Java流程控制05:Switch选择结构

    tip:switch语句的变量类型可以是:
    byte、short、int或者char。
    在Java7(Java SE 7)中引入新特性:判断的变量可以是String类型,同时case标签必须为字符串常量或字面量。

    多选择结构还有一种实现方式就是switch case语句。

    switch case 语句判断一个变量和一系列值中某个值是否相等,每个值称为一个分支。

    基础语法:

    switch(expression){
    			case value :
    					//语句
    				break;//可选
    			case value :
    					//语句
    				break;//可选
    			//任意数量的case语句
    		default ://可选
    			//语句
    }
    

    代码如下:

    package com.maynerd.struct;
    
    public class SwitchDemo {
        public static void main(String[] args) {
            String name = "小白";
            switch(name){
                case "小红":
                    System.out.println("小红");
                    break;
                case "小白":
                    System.out.println("小白");
                    break;
                default:
                    System.out.println("都不是!");
            }
        }
    }
    

    tip:反编译 java——class(字节码文件)——-反编译(IDEA),查看源码。

    IDEA项目结构→项目→输出路径→文件资源管理器打开这个路径→项目输出位置找到production目录→在找到对应下级位置,找到对应.class结尾的文件,如图。

    Untitled

    右键用文本打开将会是乱码,所以我们是用IDEA反编译,用IDEA打开,把文件拷贝到打开的IDEA中.java所在目录中,即可查看。

    Untitled

    Java流程控制06:While循环详解

    1. while循环
    2. do-while循环
    3. for循环

    基本语法:

    while(布尔表达式){
    			//循环内容
    }
    

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

    我们大多数情况是会让循环停止下来的,我们需要一个让那个表达式失效的方式来结束循环。

    少部分情况需要一直循环执行比如服务器的请求响应监听等。

    循环条件一直未true会造成无限循环,我们正常业务中应该避免这种情况造成程序卡死崩溃。

    思考:计算1加到100。

    Java流程控制07:DoWhile循环

    基本语法:

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

    while和dowhile的区别:

    1. while先判断后执行,dowhile是先执行后判断。
    2. dowhile总是会保证循环体会被至少执行一次!这是主要差别。

    思考:用while和dowhile计算1加到100。

    Java流程控制08:For循环详解

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

    for循环执行的次数是在执行前就确定的。

    tip:快捷键,输入100.for 回车自动生成一个for循环语句。

    基本语法:

    for(初始化;布尔表达式;更新){
    			//代码语句
    }
    
    package com.maynerd.struct;
    
    public class ForDemo01 {
        public static void main(String[] args) {
            int a = 1;//初始化条件
    
            while(a <= 100){//条件判断
                System.out.println(a);//循环体
                a+=2;//迭代
            }
            System.out.println("while循环结束!");
    
            //初始化  条件判断 迭代
            for (int i = 1; i < 100; i++) {
                System.out.println(i);
            }
            System.out.println("for循环结束!");
        }
    }
    

    思考1:计算0-100之间所有奇数和偶数的和。

    package com.maynerd.struct;
    
    public class ForDemo02 {
        public static void main(String[] args) {
            //思考1:计算0-100之间的技术和偶数的和
            int oddSum = 0;
            int evenSum = 0;
            for (int i = 0; i <= 100; i++) {
                if(i % 2 != 0){
                    oddSum += i;
                }else{
                    evenSum += i;
                }
            }
    
            System.out.println("奇数的和:" + oddSum);
            System.out.println("偶数的和:" + evenSum);
        }
    }
    

    思考2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个。

    package com.maynerd.struct;
    
    public class ForDemo03 {
        public static void main(String[] args) {
            //用while和for循环输出1-100之间呗5整除的数,并且每行输出3个。
            for (int i = 1; i <= 1000; i++) {
                if(i % 5 == 0){
                    System.out.print(i + "\t");
                }
                if(i % 15 == 0){//每行
                    System.out.println();
                }
            }
        }
    }
    

    Java流程控制09:打印九九乘法表

    思考3:打印九九乘法表。

    package com.maynerd.struct;
    
    public class ForDemo05 {
        public static void main(String[] args) {
            //打印九九乘法表
            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();
            }
        }
    }
    

    Java流程控制10:增强For循环

    tip:在Java5中引入一种主要用于数组或集合的增强for循环。

    Main方法上面括号就是一个数组

    基础语法:

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

    代码如下:

    package com.maynerd.struct;
    
    public class ForDemo06 {
        public static void main(String[] args) {
            int[] numbers = {10,20,30,40,50};//定义了一个数组
    
            for (int i = 0; i < 5; i++) {
                System.out.println(numbers[i]);
            }
            System.out.println("========================");
            //遍历数组元素
            for (int number : numbers) {
                System.out.println(number);
            }
        }
    }
    

    Java流程控制11:break、continue、goto

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

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

    关于goto关键字:

    goto关键字很早就在程序设计语言中出现。尽管goto是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子...带标签的break和continue。

    “标签”是指后面跟一个冒号的标识符,例如:label;

    对Java来说唯一用到标签的地方是在循环语句之前。而在循环语句之前设置的标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用他们,他们就会中断到存在标签的地方。

    打印101-150之间所有的质数,代码如下。

    package com.maynerd.struct;
    
    public class LabelDemo {
        public static void main(String[] args) {
            //打印101-150之间所有的质数
            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.print(i + "\t");
            }
        }
    }
    

    Java流程控制12:打印三角形及Debug

    五行的三角形,代码如下。

    package com.maynerd.struct;
    
    public class ForDemo04 {
        public static void main(String[] args) {
            for (int i = 0; i < 5; i++) {
                for (int j = 5; j > i; j--) {
                    System.out.print(" ");
                }
                for (int j = 0; j <= i; j++) {
                    System.out.print("*");
                }
                for (int j = 0; j < i; j++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    

    Debug需要标记断点,再开启Debug模式,最后在console控制台一步一步往下执行,主窗口会标识每一行的变量值的变化。

  • 相关阅读:
    HTTP 无法注册URL 进程不具有命名空间的访问权限
    逆变与协变详解
    正式学习React(五) react-redux源码分析
    正式学习React(四) ----Redux源码分析
    正式学习react(二)
    工作总结
    如何自定义echarts 线性图的选择事件
    viewport大白话
    关于div可编辑的复制粘贴问题
    nginx学习
  • 原文地址:https://www.cnblogs.com/Mingusu/p/15930132.html
Copyright © 2020-2023  润新知