4、Java流程控制

4.1、用户交互Scanner

  • 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是 Java5的新特征,我们可以通过Scanner类来获取用户的输入。

  • 基本语法:

    • scanner s = new Scanner(System.in);
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。

  • next和nextLine

    • next():

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

      2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。

      3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。

      4、next()不能得到带有空格的字符串。

    • nextLine():【常用】

      1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。

      2、可以获得空白。

  • 结合if语句使用

    package com.hhx.scanner;
    import java.util.Scanner;
    public class Demo03 {
    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("输入的数据不是整数");
    } if(scanner.hasNextFloat()){
    f=scanner.nextFloat();
    System.out.println("小数数据"+f);
    }else {
    System.out.println("输入的数据不是小数");
    }
    }
    }
  • 结合while语句使用

    package com.hhx.scanner;
    import java.util.Scanner;
    public class Demo04 {
    public static void main(String[] args) {
    //我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
    Scanner scanner = new Scanner(System.in);
    //和
    double sum =0;
    //计算输入了多少个数据
    int m=0;
    //通过循环判断是否还有输入,并在里面进行求和,统计。
    while(scanner.hasNextDouble()){
    double x=scanner.nextDouble();
    m++;
    sum=sum+x;
    System.out.println("你输入了"+m+"个数据,和为:"+sum);
    }
    System.out.println(m+"个数的和为"+sum);
    System.out.println(m+"个数的平均值为"+(sum/m));
    scanner.close();
    }
    }

4.2、顺序结构

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

  • 顺序结构是最简单的算法结构。

  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,

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

4.3、选择结构

  • if单选择结构

    package com.hhx.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();
    //
    if(s.equals("hello")){
    System.out.println("你好");
    }
    System.out.println("end");
    scanner.close();
    }
    }
  • if双选择结构

    package com.hhx.struct;
    
    import java.util.Scanner;
    
    public class IfDemo02 {
    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();
    }
    }
  • if多选择结构

package com.hhx.struct;

import java.util.Scanner;

public class IfDemo03 {
/*
i订f语句至多有1 个else 语句,eLse语句在所有的else if语句之后。i订于f语句可以有若干个else if语句,它们必须在else语句之前。
但其中一个 else if 语句检测为 true,其他的else if以及 else 语句都将跳过执行。
*/
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>=0){
System.out.println("不及格");
}else{
System.out.println("输入不合法");
}
scanner.close();
}
}
  • 嵌套的if结构

    • 语法

    • if(布尔表达式1){
      //如果布尔表达式1的值为true执行代码
      if(布尔表达式2){
      //如果布尔表达式2的值为true执行代码}
      }
      }
  • switch多选择结构

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

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

      • byte.short、int或者char。
      • 从Java SE7开始switch支持字符串String类型了
      • 同时case标签必须为字符串常量或字面量。
      package com.hhx.struct;
      
      public class SwitchDemo01 {
      public static void main(String[] args) {
      //case 穿透 switch匹配一个具体的值
      //如果不加break将会一直输出
      char grade ='A';
      switch (grade){
      case 'A':
      System.out.println("优秀"); case 'B':
      System.out.println("良好");
      break; //可选
      case 'C':
      System.out.println("及格");
      break;
      case 'D':
      System.out.println("再接再厉");
      break;
      default://可选
      System.out.println("未知");
      }
      }
      }
      package com.hhx.struct; public class SwitchDemo02 { //从Java SE7开始switch支持字符串String类型了
      //反编译Java-----class(字节码文件)----反编译(idea)
      //项目设置---》项目机构--》项目编译器输出---》找到对应的反编译文件---》拖入idea项目文件
      public static void main(String[] args) {
      String name ="何浩祥";
      switch (name){
      case "何浩祥":
      System.out.println("何浩祥");
      break;
      case "大魔王":
      System.out.println("大魔王");
      break;
      default:
      System.out.println("嗷嗷嗷");
      break;
      }
      }
      }

4.4、循环结构

  • while循环

    • while循环是最基本的循环,它的结构是

      while(布尔表达式){
      //循环内容
      }
    • 只要布尔表达式为true,循环就会一直执行下去。

    • 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。少部分情况需要循环一直执行,比如服务器的请求响应监听等。

    • 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃!

      package com.hhx.struct;
      
      public class WhileDemo01 {
      public static void main(String[] args) {
      //输出0到100
      int i=0;
      while(i<100){
      i++;
      System.out.println(i);
      }
      }
      }
      package com.hhx.struct; public class WhileDemo02 {
      public static void main(String[] args) {
      //死循环
      //等待客户链接,定时检查...
      while(true){
      System.out.println("何浩祥牛逼");
      }
      }
      }
      package com.hhx.struct; public class WhileDemo03 {
      public static void main(String[] args) {
      //计算1+2+3+4+5.....+100的值
      int i =0;
      int sum =0;
      while(i<100){
      i++;
      sum=sum+i;
      }
      System.out.println(sum);
      }
      }
  • do...while循环

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

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

      do{
      //代码语句
      }while(布尔表达式)
  • While和do-While的区别:

    • while先判断后执行。dowhile是先执行后判断!
    • Do...while总是保证循环体会被至少执行一次!这是他们的主要差别。
    package com.hhx.struct;
    
    public class DoWhileDome02 {
    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);
    a++;
    }while(a<0);
    }
    }
  • for循环

    • 虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句——for循环,使一些循环结构变得更加简单。

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

    • for循环执行的次数是在执行前就确定的。语法格式如下:

      for(初始化;布尔表达式;更新){
      代码语句
      } package com.hhx.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循环有以下几点说明:
      * 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
      * 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
      * 执行一次循环后,梗新循环控制变量(迭代因子控制循环变量的增减)。
      * 再次检测布尔表达式。循环执行上面的过程。
      * */
      for (int i = 0; i < 100; i++) {
      System.out.println(i);
      }
      System.out.println("for循环结束");
      }
      }
    • 练习1:计算0到100之间的奇数和偶数的和

    package com.hhx.struct;
    
    public class ForDemo02 {
    public static void main(String[] args) {
    //计算0-100的奇数偶数和
    int oddsum=0;
    int evensum=0;
    for(int i=0;i<=100;i++){
    if(i%2!=0){
    evensum+=i;
    }else{
    oddsum+=i;
    }
    }
    System.out.println(oddsum);
    System.out.println(evensum);
    }
    }
    • 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
    package com.hhx.struct;
    
    public class ForDemo03 {
    public static void main(String[] args) {
    //0-1000中能被5整除的数,每隔三个换行
    for (int i = 0; i < 1000; i++) {
    if(i%5==0){
    System.out.print(i+"\t");
    if(i%(3*5)==0){
    System.out.println();
    }
    }
    }
    }
    }
    • 练习3:打印九九乘法表

      package com.hhx.struct;
      
      public class ForDemo04 {
      //1.我们先打印第一列
      // 2.我们把固定的1再用一个循环包起来
      // 3.去掉重复项,m <= n
      //4.调整样式
      public static void main(String[] args) {
      for (int m = 1; m <=9; m++) {
      for (int n = 1; n <= m; n++) {
      System.out.print(m+"*"+n+"="+m*n+"\t");
      }
      System.out.println();
      }
      }
      }
  • 增强for循环

    package com.hhx.struct;
    
    public class ForDemo05 {
    public static void main(String[] args) {
    int[] a ={10,20,30,40,50};
    for (int i = 0; i < 5; i++) {
    System.out.println(a[i]);
    }
    System.out.println("============"); for(int x : a){
    System.out.println(x);
    }
    }
    }

4.5、break & continue

  • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
  • continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
package com.hhx.struct;

public class BreakDemo01 {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println(i);
if(i==88){
break;
}
}
}
} public class ContinueDemo01 {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
if(i%10==0){
System.out.println();
continue;
}
System.out.print(i+"\t");
}
}
}

4. Java流程控制的更多相关文章

  1. JAVA流程控制

    JAVA流程控制 example1: --输出九九乘法表 public class chengfabiao { public static void main (String[] args){     ...

  2. Java学习笔记之:Java流程控制

    一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操 ...

  3. Java流程控制练习--万年历

    Java流程控制练习--万年历 标签: Java入坑之旅 0x01. 打印倒三角和正三角 public static void main(String[] args) { // TODO Auto-g ...

  4. Java 流程控制

                                   Java    流程控制 Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支 ...

  5. JAVA 流程控制之选择语句

    在程序设计时,有三种基本技术可以改变程序的流程控制: 调用方法: 选择: 循环. 在这里,我们主要来讲讲选择语句. JAVA中的选择语句与C语言中的基本相同,包括: if 语句: if/else 语句 ...

  6. 《快乐编程大本营》java语言训练班-第4课:java流程控制

    <快乐编程大本营>java语言训练班-第4课:java流程控制 第1节. 顺序执行语句 第2节. 条件分支语句:if条件语句 第3节. 条件分支语句:switch 条件语句 第4节. 条件 ...

  7. Java流程控制,for,switch,while.break,continue,return

    Java流程控制,for,switch,while.break,continue,return

  8. 053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结

    053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结 本文知识点: 流程控制知识总结 流程控制知识总结 选择结构语句 循环结构语句 ...

  9. 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序

    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...

  10. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

随机推荐

  1. 求Fibonacci数列通项公式

    0. Intro \[f_n=\begin{cases} 0 & (n=0) \\ 1 & (n=1) \\ f_{n-1}+f_{n-2} & (n>1) \end{c ...

  2. Java中静态变量与非静态变量的区别

    感谢大佬:https://www.cnblogs.com/liuhuijie/p/9175167.html ①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 ...

  3. Java线程--ReentrantLock使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11871593.html Java线程--ReentrantLock使用, 互斥锁: Reent ...

  4. 直播流媒体ums

    准备工具 下载  UltrantMediaServer服务器 FlashMediaLiveEncoder测试直播工具 第一步 安装 UltrantMediaServer服务器 第二步 打开网也输入   ...

  5. Postman接口测试脚本编写规范

    Postman接口测试脚本编写规范 1.前言 2.名词解释 3.接口测试脚本规范 3.1接口测试脚本编写的规范 3.2 Postman使用规范 4.单个接口测试 5.整个流程的开发过程 1.前言 本规 ...

  6. MybatisPlus二级缓存

    一.序言 本文承接[Mybatis缓存体系探究],提供基于MybatisPlus技术可用于生产环境下的二级缓存解决方案. 1.前置条件 掌握MyBatis二级缓存的原理 有关MyBatis缓存原理内容 ...

  7. dfs+search

    1.数的划分 点击查看搜索 #include<iostream> #include<cstdio> #include<cmath> #include<algo ...

  8. 【琉忆分享】新手如何学习PHP?附上PHP知识导图。

    你好,是我--琉忆.PHP程序员面试系列图书作者. 作为一名PHP开发者过来人,也是经历了菜鸟到老手的过程,在此给那些想学PHP的同学指条路,即使你是转行学PHP一样可以学会PHP. (如果觉得下面这 ...

  9. 我们一起来学Shell - shell的数组

    文章目录 什么是数组 数组中常用变量 数组的定义 小括号定义数组变量 小括号加键值对定义数组变量 分别定义数组变量 动态地定义数组变量 数组赋值的切片 遍历数组 关联数组 我们一起来学Shell - ...

  10. Spring Boot内置Tomcat

    Spring Boot默认支持Tomcat/Jetty/Undertow作为底层容器.在之前实战相关的文章中,可以看到引入spring-boot-starter-web就默认使用tomcat容器,这是 ...