IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 狂神JAVASE系列-流程控制篇 -> 正文阅读

[Java知识库]狂神JAVASE系列-流程控制篇

1. 用户交互Scanner

1.1 Scanner对象:

  • ?? Java提供的一个工具类,利用Scanner类可以获取用户的输入。
  • ??? java.util.Scanner是java5新特性

1.2 基本语法

 Scanner scanner     = new Scanner(System.in);
  类     对象名(随便)
Scanner scanner = new Scanner(System.in);

......





scanner.close();

1.3 注意

??????? 通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前通常会使用hashNext()与hashNextLine()判断是否还有输入的数据

示例:

package Lckz;

import java.util.Scanner;

public class Demon01 {
    public static void main(String[] args) {
        //创建一个扫描器对象 用于接收键盘输入
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收:");

        //判断用户是否输入字符串
        if(scanner.hasNext()){
            //使用next方式接收
            String str = scanner.next(); //程序会等待用户输入完毕
            System.out.println("输出的内容为: "+str);

        }
        //凡是属于IO流的类一定要记得关流操作
        //如果不关闭就会一直占用资源,要养成好的习惯用完就直接关掉
        scanner.close();
    }
}
package Lckz;

import java.util.Scanner;

public class Demon02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式接收: ");
        if(scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("输出的内容为: ");
        }
        scanner.close(); //关流操作


    }
}

?==================================================================== ????????????????????????????

???????????????????????????? next()方法和nextLine()方法对比:有什么区别?

总结如下:

????????next():

  • 一定要读取到有效字符才可以结束输入。也就是必须的输入
  • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
  • 例如:Hello World 输出Hello
  • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  • next()不能得到带有空格的字符串。空格之后的就直接删了

????????nextLine()

  • 以Enter作为结束符,即:nextLine()方法返回的输入回车之前地 所有字符
  • 可以获得空白。

其他用法:

??? scanner.nextInt()????????????? scanner.nextFloat()

2. 顺序结构

?????? 自从而下 太简单

3. 选择结构

?? 3.1 if单选结构??

语法:
if(布尔表达式){

    如果为真,执行的语句
}

?? 代码示例:

????????

package struct;

import java.util.Scanner;

public class ifDemon01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入内容");
        String s = scanner.nextLine();
        if (s.equals("hello")){
            System.out.println(s);
        }
        System.out.println("End");
        scanner.close();
    }
}

? 3.2 if双选结构

if(布尔表达式){

    语句A;  //布尔表达式的值为true
}else{

    语句B; //布尔表达式的值为false
}

?? 代码示例:

package struct;

import java.util.Scanner;

public class ifDemon02 {
    public static void main(String[] args) {
        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.3 if多选择结构

语法:

if(布尔表达式1){

    如果1为真,执行语句A
}else if(布尔表达式2){
    如果2为真,执行语句B
}else if(布尔表达式3){
    如果2为真,执行语句C
}else{

    上述都不满足  执行语句D
}

代码示例:

package struct;

import java.util.Scanner;

public class ifDemon03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        /*
        if语句至多有一个else语句,且else语句在所有的else if语句之后
        if语句可以有若干个else if语句,它们必须在else语句之前
        一旦其中一个else if 检测为true,其他的else if 以及else语句都将跳过执行
         */
        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{
            System.out.println("不合格");
        }

        scanner.close();

    }
}

??? 3.4 嵌套的if结构

语法:

if(布尔表达式1){
    if(布尔表达式2){
        
    }
}

代码示例:寻找一个数,在1-100之间

???? 3.5 switch多选择结构

语法:

switch(expression){

    case value1:
        执行语句A
        break; //可选
    case value2:
        执行语句B
        break;
    .....
    default:  //可选 意思是可有可无
        执行语句

}

注意点:不写break,会出现case穿透

代码示例:?????

package struct;

public class switchDemon01 {
    public static void main(String[] args) {
        char rank = 'A';
        /*
        不加break  会出现case穿透 
        优秀
        良好
        一般
        就那样
        呵呵
         */
      switch (rank){
          case 'A':
              System.out.println("优秀");
              break;
          case 'B':
              System.out.println("良好");
              break;
          case 'C':
              System.out.println("一般");
              break;
          case 'D':
              System.out.println("就那样");
              break;
          case 'E':
              System.out.println("呵呵");
              break;
      }
    }
}

switch总结

  • switch语句中的变量类型可以是,byte,short,int或者char
  • 从JAVASE 7开始,switch支持字符串String类型。
  • package struct;
    
    public class switchDemon02 {
        public static void main(String[] args) {
           String name = "EZ";
          //JDK7新特性,表达式的结果可以是字符串
          //反编译 java---->class(字节码文件)---------->反编译
            switch (name){
                case "EZ":
                    System.out.println("adc");
                    break;
                case "德玛":
                    System.out.println("上单");
                    break;
               
            }
        }
    }

    查看上面代码反编译后的结果

  • //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by FernFlower decompiler)
    //
    
    package struct;
    
    public class switchDemon02 {
        public switchDemon02() {
        }
    
        public static void main(String[] var0) {
            String var1 = "EZ";
            byte var3 = -1;
            switch(var1.hashCode()) {
            case 2229:
                if (var1.equals("EZ")) {
                    var3 = 0;
                }
                break;
            case 23854855:
                if (var1.equals("寰风帥")) {
                    var3 = 1;
                }
            }
    
            switch(var3) {
            case 0:
                System.out.println("adc");
                break;
            case 1:
                System.out.println("涓婂崟");
            }
    
        }
    }

4. 循环结构

??????? 4.1 while循环

  • ? 小部分情况需要循环一直进行,例如服务器请求响应监听等,、
  • 除此之外,大多数情况是会让循环停下来的。
  • 输出1-100
    int i = 0;
    while(i<100){
        i++;
        system.out.println(i)
    }

    代码示例:1+2+3+...+100????????????????

package struct;

public class WhileDemon01 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 0;
        while (i<=100){
            sum = sum + i;
            i++;
        }
        System.out.println(sum);
    }
}

??????? 4.2 do-while循环

??????????????? 对于while而言,如果不满足条件,则无法进入循环,但是有时候我们需要即使不满足条件,也至少执行一次。

??????? while vs do-while

???????? (1) while先判断后执行,do-while先执行后判断

??????? (2)由(1)可知,do-while至少会执行一次。

语法结构:

do{
    执行语句    

}while(布尔表达式);

????

package struct;

public class WhileDemon01 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 0;
        do {
            sum = sum + i;
            i++;
        }while (i<=100);
        System.out.println(sum);
    }
}
public class WhileDemon01 {
    public static void main(String[] args) {
        int a = 0;
        while (a<0){
            System.out.println(a);
            a++;
        }
        System.out.println("==============");
        do {
            System.out.println(a); // 0
            a++;
        }while (a>10);
    }
}

4.3 for循环

语法:??????

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

关于for循环的几点说明:

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

??????? 检测布尔表达式的值,如果结果为true,循环体被执行,否则被终止

??????? 执行一次循环后,更新循环控制变量

for(;;i++){

}
///死循环
for(;;;){
}

fori tab快捷

示例1:计算0-100之间的奇数和偶数的和

public class WhileDemon01 {
    public static void main(String[] args) {
        //计算0-100之间的奇数和偶数的和
        int NumJs = 0;
        int NumOs = 0;
        for(int i=0;i<=100;i++){
            if (i%2==0){
                NumOs += i; //偶数累加
            }else {
                NumJs += i; //奇数累加
            }

        }
        System.out.println("奇数和偶数的和"+NumOs+NumJs);
    }

}

实例2:循环输出1-1000之间能被5整除的数,并且每行输出3个

public class WhileDemon02 {
    public static void main(String[] args) {
        //循环输出1-1000之间能被5整除的数,并且每行输出3个
        for (int i = 0; i < 1000; i++) {
           if(i%5==0){
               System.out.print(i+"\t");
           }
           if(i%(5*3)==0){
               System.out.println("\n");
           }
        }

        }

    }
/*
注意:
println:输出一个语句结束会自动换行输出,
print在输出完一个语句时并不会自动换行。
*/

示例3:?? 实现99乘法表

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


}

4.4 增强型for循环(java5中引入一种主要用于数组的增强型for循环)

??????? 语法格式

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

}

??????? 声明语句

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

????????表达式

??????????????? 要访问的数组名或者是返回值为数组的方法。

public class ForDemon01 {
    public static void main(String[] args) {
        int [] number = {10,20,30,40};
        //增强型for循环
        for(int x:number){ 
            System.out.println(x);
        }

    }
}

================================================
public class ForDemon01 {
    public static void main(String[] args) {
        int [] number = {10,20,30,40};
//普通for循环 
        for(int i=0;i<5;i++){
            System.out.println(number[i];
        }

    }
}

5. break & continue

??????? break:用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)

??????? continue:用于终止某次循环过程。

??????? goto:尽管goto是java的一个保留字,但未在语言中正式使用,也就是java中没有goto

带有标签的break和continue

代码示例:??

public class BreakDemon01 {
    public static void main(String[] args) {
        int i = 0;
        while(i<10){
            i++;
             
            if(i==8){
//                break;//输出8以后就跳出循环了  不执行了
                continue;//就跳出本次循环了  也就是输出8之前跳出去
            } System.out.println(i);
        }
    }

}

6.代码实践练习

打印 三角形

public class PracticeDemon01 {
    public static void main(String[] args) {
        //打印三角形
        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();
            /*
               *
              ***
             *****
            *******
           *********
             */

        }
    }

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:04:09  更:2022-05-05 11:07:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:17:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码