javase-流程控制(代码片段)

Zh1z3ven Zh1z3ven     2022-11-29     247

关键词:

流程控制

  1. 用户交互Scanner 获取用户键盘输入
  2. 顺序结构 程序按顺序执行流程
  3. 选择结构 if,switch
  4. 循环结构 for,do while,while
  5. Break & Continue
  6. 所有的流程控制语句都可以相互嵌套而互不影响

Scanner

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

基本语法

Scanner s = new Scanner(System.in)

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

next()判断是否有下一个字符,如遇到空格,则空格后的字符并不会被打印出来;而nextLine()则会打印整行内容。

hashNextInt() 判断是否输入为int型

hashNextFloat() 判断输入是否为float类型

package com.Zh1z3ven.Scanner;

import java.util.Scanner;

public class Demo01 
    public static void main(String[] args) 

        // 创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);

        // alt + enter 显示提示快捷键;mac为option + enter

        System.out.println("使用next方式接受:");

        // 判断用户有没有输入字符串

        if (scanner.hasNext())
            //使用next接受用户输入
            String str = scanner.nextLine();
            System.out.println("输出的内容为:"+str);
        

        // 用完scanner后关闭,节省资源,凡是io流,用完后需要关闭,节省资源
        scanner.close();
    

IDEA获取structure

Command + 单击 --> 跟进此类的源码,点击Structure可以看此类中的所有方法

image-20210603231015956

if else 判断语句

通过关系表达式的值判断,为true执行if,为false执行else

if (关系表达式)
            语句体;
else if (关系表达式)
            语句体;
else 
						语句体;

public static void main(String[] args) 
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入内容:");

        String s = scanner.nextLine();

        //s.equals 判断字符串是否相等
        if (s.equals("Hello"))
            System.out.println(s);
        else 
            System.out.println("end");
        

        scanner.close();

    

if else if

public static void main(String[] args) 
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入成绩:");

        int score = scanner.nextInt();

        if (score >= 90 && score < 100)
            System.out.println("A");
        else if (score >= 80 && score < 90)
            System.out.println("B");
        else if (score >= 70 && score < 80)
            System.out.println("C");
        else if (score >= 60 && score < 70)
            System.out.println("D");
        else if (score >= 0 && score < 60)
            System.out.println("不及格");
        else 
            System.out.println("输入的成绩有误");
        


        scanner.close();
    

Switch选择语句

switch格式

switch(表达式) 
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n;
break;

首先计算出表达式的结果,依次将该结果与case后跟的值进行比较,如果有相等的值则执行相应case中的语句,遇到break跳出switch语句,如果没有case符合表达式的结果,则执行default中语句。case后的值可以是byte/short/int/char,在javaSE7之后支持String类型,case标签必须是字符串常量或字面量

JDK7的新特性,表达式的结果可以是字符串

字符的本质还是数字

    public static void main(String[] args) 

        int weekday = 4;
        switch (weekday) 
            case 1:
            		// 这里case下面不加break会出现case穿透,即没加break的case都会执行一遍语句体,不管是否匹配表达式
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            default:
                System.out.println("输入参数有误");
                break;
        

    

反编译

因为Java程序在执行时会把java文件先编译为class文件,而class文件打开是字节码文件,用文本形式打开是乱码,这时候就需要反编译class文件,将其变为java文件方便我们阅读。而IDEA就可以做到反编译。

将我们编译运行java文件生成的对应的class文件拷贝到上面的程序目录

public static void main(String[] args) 
        String name = "Zh1z3ven";

        switch (name)
            case "Zh1z3ven":
                System.out.println("Zh1z3ven");
                break;
            default:
                System.out.println("输入有误");
        


    

image-20210604165009816

这时就可以看到java文件了,这里机器在处理时利用字符串的hashcode去代替字符串进行判断。

image-20210604165325624

顺序结构

在java中main函数作为程序主入口,从main函数开始顺序执行代码块。

for循环

当布尔表达式为true时循环执行循环体中内容,直到布尔表达式为false时,结束循环。

关于for循环的说明

最新执行初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。

然后检测布尔表达式的值。如果为true,循环体被执行,如果为false,循环种植,开始执行循环体后面的语句

执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)

再次检索布尔表达式,循环执行上面的过程

for(初始化表达式;布尔表达式;步进表达式)    循环体;
public static void main(String[] args)         for (int i = 1; i <= 9; i++)             for (int j = 1; j <= i; j++)                 System.out.print(j+"*"+i+"="+j*i+"\\t");                        System.out.println("");            1*1=1	1*2=2	2*2=4	1*3=3	2*3=6	3*3=9	1*4=4	2*4=8	3*4=12	4*4=16	1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	

增强for循环

主要是用来遍历数组和集合对象的。

Jdk5引入了一种主要用于数组和集合的增强型for循环

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句快,其值与此时数组元素的值相等。

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

for(声明语句:表达式)	//代码
public static void main(String[] args)         int[] numbers = 10, 20, 30, 40, 50;        for (int x:numbers)            System.out.println(x);            

while循环

当布尔表达式为true时执行循环体,若永远为true则是死循环,可以添加步进表达式控制循环次数,当布尔表达式永真时则为死循环。所以也需要控制布尔表达式的值,当达到目的后停止while循环。

初始化表达式while(布尔表达式)循环体步进表达式
public static void main(String[] args)         // 输出1-100        int i = 0;        while (i<100)            i++;            System.out.println(i);        
public static void main(String[] args)         // 计算1+2+3+...100        int i = 0;        int sum = 0;        while (i<100)            i++;            sum += i;                System.out.println(sum);            

do-while循环

do-while会先执行一次循环体在去判断布尔表达式,也就是说无论如何都会执行一次循环体,而while循环,当布尔值为false直接会跳过循环体不执行。

初始化表达式do循环体步进表达式while(布尔表达式);
// do-while会执行一次循环体,而下面的while并不会执行循环体public static void main(String[] args)         int i = 0;        int sum = 0;        do             i++;            sum = sum + i;        while (i<100);            System.out.println(sum);    
  • [x] > 控制条件语句所控制的那个变量(比如常用i作控制循环次数的变量),在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。

    while与do-while区别

break&continue

break

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

continue

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

javase_流程控制

顺序结构没有特定语法结构,按照代码先后顺序,依次执行。 查看详情

javase程序逻辑控制(代码片段)

...结构if语句悬垂elseswitch语句循环结构输入输出方式输出到控制台 从键盘输入猜数字游戏前言本章主要讲解:Java中程序的逻辑控制语句Java中的输入输出方式顺序结构按照代码书写的顺序一行一行执行分支结构if语句基本语法... 查看详情

javase基础知识—流程控制结构

一、顺序结构1、说明  程序从上往下依次执行,中间没有任何跳转或选择2、特点  变量必须遵循“前向引用”  (局部变量必须先声明、赋值,然后再使用!)二、分支结构(条件)1、说明  程序从两条或多条路径中... 查看详情

03javase—程序逻辑控制(代码片段)

目录一,写在前面二,顺序结构 三,分支结构1,if语句 2,switch语句三,循环结构1,while循环2,break 3,continue 4,for循环四,输入输出1,输出到控制台2,从键盘输入五, 查看详情

javase练习2——流程控制_2.2

一、假设某员工今年的年薪是30000元,年薪的年增长率6%。编写一个Java应用程序计算该员工10年后的年薪,并统计未来10年(从今年算起)总收入。packagecom.test;publicclasst01{publicstaticvoidmain(String[]args){ doublesalary=3000;//年薪 longsum=0;//... 查看详情

java核心技术卷i控制流程大数值数组(代码片段)

前言:个人已经学习了一遍Java,为了巩固基础查漏补缺,自己再看一遍核心卷。该文章主要补充了一些自己没有了解的、重要的、易忘记的知识点,所以并不是用来专门学习Java的文章,而是主要用来帮助大家... 查看详情

javase练习2——流程控制_2.1

一、企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60... 查看详情

大数据开发阶段一javase基础知识点总结持续更新(代码片段)

...型4.2自动类型转换4.3强制类型转换5、运算符和表达式6、流程控制语句二、数组1、 查看详情

基础补充——流程控制(代码片段)

 流程控制一、流程控制之if……else……  if条件1:    缩进的代码块  elif条件2:    缩进的代码块  elif条件3:    缩进的代码块  ......  else:      缩进的代码块 二、流程控制之while……循... 查看详情

swift控制流程迅速(代码片段)

查看详情

go语言流程控制(代码片段)

...控制switch循环控制forbreakcontinuegoto在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。顺序控制分支控制循环控制顺序控制程序从上到下逐行的执行,中间没有任何判断和跳转... 查看详情

javase之面向对象(代码片段)

...在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型);比如:ArrayList<E>E就是泛型,这种不确定的数据类型需要在使用这个类的时候才能够确定出来。13、解释extends和super泛型限定符-上界不存... 查看详情

05流程控制(代码片段)

流程控制方法的使用极大的增强了程序的执行能力,使得程序能像人一样,能够判断条件并根据结果来执行一系列任务。流程控制包括if判断、while循环和for循环。一、流程控制之if判断1.基本语法:语法1:在if后面加上判断条件,... 查看详情

textshell条件判断与流程控制(代码片段)

查看详情

流程控制(代码片段)

  程序流程控制流程控制语句结构:1、顺序结构语句的关系是从上到下依次执行的顺序关系,中间没有任何判断和跳转;它是最基本的结构,Java程序总体来说都是从main()依次执行2、分支结构;根据条件,选择性地执行某... 查看详情

流程控制(代码片段)

delimiter//CREATEPROCEDUREproc_if()BEGINdeclareiintdefault0;ifi=1THENSELECT1;ELSEIFi=2THENSELECT2;ELSESELECT7;ENDIF;END//delimiter;if条件语句二循环语句delimiter//CREATEPROCEDUREproc_while()BEGINDECLAREnumINT;S 查看详情

mysql流程控制(代码片段)

阅读目录MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函数的使用MySQLIF()函数的使用分支结构之IFIFNULL()函数的使用NULLIF()函数的使用ISNULL()函数的使用case函数实操案例示例1示例2MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函数的使用MySQ... 查看详情

mysql流程控制(代码片段)

阅读目录MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函数的使用MySQLIF()函数的使用分支结构之IFIFNULL()函数的使用NULLIF()函数的使用ISNULL()函数的使用case函数实操案例示例1示例2MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函数的使用MySQ... 查看详情