Java流程控制

Posted wangyiwen-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java流程控制相关的知识,希望对你有一定的参考价值。

Java流程控制


1、用户交互Scanner

java.util.Scanner 是Java5的新特性,可以通过Scanner类来获取用户的输入

import java.util.Scanner;
?
public class Demo1 {
   public static void main(String[] args) {
       //创建一个扫描器对象,用来接收键盘数据
       Scanner scan = new Scanner(System.in);
       // next方式接收字符串
       System.out.println("next方式接收:");
       // 判断是否还有输入
       if (scan.hasNext()) {
           String str1 = scan.next();
           System.out.println("输入的数据为:" + str1);
      }
       //凡是属于IO流的类用完都得关闭,不然会一直占用资源
       scan.close();
  }
}

next() 与 nextLine() 区别

next():

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

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

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

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

nextLine():

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

  • 2、可以获得空白


如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:

import java.util.Scanner;

public class ScannerDemo {
   public static void main(String[] args) {
       Scanner scan = new Scanner(System.in);
       // 从键盘接收数据
       int i = 0;
       float f = 0.0f;
       System.out.print("输入整数:");
       if (scan.hasNextInt()) {
           // 判断输入的是否是整数
           i = scan.nextInt();
           // 接收整数
           System.out.println("整数数据:" + i);
      } else {
           // 输入错误的信息
           System.out.println("输入的不是整数!");
      }
       System.out.print("输入小数:");
       if (scan.hasNextFloat()) {
           // 判断输入的是否是小数
           f = scan.nextFloat();
           // 接收小数
           System.out.println("小数数据:" + f);
      } else {
           // 输入错误的信息
           System.out.println("输入的不是小数!");
      }
       scan.close();
  }
}

以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

import java.util.Scanner;

class ScannerDemo {
   public static void main(String[] args) {
       Scanner scan = new Scanner(System.in);

       double sum = 0;
       int m = 0;

       while (scan.hasNextDouble()) {
           double x = scan.nextDouble();
           m = m + 1;
           sum = sum + x;
      }

       System.out.println(m + "个数的和为" + sum);
       System.out.println(m + "个数的平均值是" + (sum / m));
       scan.close();
  }
}

2、顺序结构

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

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

语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本语法结构。

3、选择结构

if单选择结构

  • 我们需要去判断一个东西是否可行,然后我们才会去执行,这样的一个过程在程序中用if语句来表示

  • 语法:

    if(布尔表达式){

    //如果布尔表达式为true将执行的语句

    }

if双选择结构

  • 如果需要判断考试分数是否及格,大于等于60分及格,否则就不及格,这样我们需要一个双选择结构,if-else

  • 语法:

    if(布尔表达式){

    //如果布尔表达式为true将执行的语句

    }else{

    //如果布尔表达式为false将执行的语句

    }

if多选择结构

  • 生活中有时候需要判断的情况很多,不仅仅只有两个,那么我们就需要用一个多选择结构来处理if-else if-else

  • 语法:

    if(布尔表达式1){

    //如果布尔表达式1为true将执行的语句

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

    //如果布尔表达式2为true将执行的语句

    }else if(布尔表达式3){

    //如果布尔表达式3为true将执行的语句

    }else{

    //如果以上都不是true将执行的语句

    }

嵌套的if结构

  • 使用嵌套的if...else语句是合法的。也就是在另一个if或者else if语句中使用if或者else if 语句。可以像if语句一样嵌套else if ...else

  • 语句:

    if(布尔表达式1){

    //如果布尔表达式1为true将执行的语句

    if(布尔表达式2){

    //如果布尔表达式2为true将执行的语句

    }

    }

switch多选择结构

  • 多选择结构还有一个实现方式switch case 语句

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

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

    • byte、short、int、或者char

    • 从Java SE7开始

    • switch 支持字符串 String类型

    • 同时 case 标签必须为字符串常量或字面量

 

4、循环结构

while 循环

最基本的循环,结构为:

while(布尔表达式){

//循环内容

}

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

为了让循环能够停下来,我们需要一个让表达式不成立的方式结束循环;

如果循环条件一直为true就会造成死循环

do...while 循环

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

do{

//代码块

}while(布尔表达式);

while 和 do-while的区别:

  • while先判断后执行;do-while 先执行后判断

  • do-while总是保证循环体会被至少执行一次。

for 循环

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

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

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

语法:

for(初始化; 布尔表达式; 更新) {

//代码语句

}

在Java5中引入了一种主要用于数组的增强型for循环

增强for循环语法

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

//代码语句

}

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

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

    public class Demo6 {
       public static void main(String[] args) {
           int[] numbers = {10,20,30,40,50};
           //for循环遍历输出
           for (int i = 0;i<numbers.length;i++){
               System.out.println(numbers[i]);
          }
           System.out.println("===================");
           //增强for循环
           for (int x : numbers){
               System.out.println(x);
          }
      }
    }

     

5、break&continue

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

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

goto关键字

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

  • "标签"是指后面跟一个冒号的标识符,例如:label:

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

6、练习

public class Demo5 {
   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){
               oddSum += i;
           }else{
               evenSum += i;
           }
       }
       System.out.println("100以内奇数的和为:" + oddSum);
       System.out.println("100以内偶数的和为:" + evenSum);*/
       /* for循环输出1-1000之间被5整除的数,每行输出3个
       for(int i = 1;i <= 1000;i++) {
           if (i % 5 == 0) {
               System.out.print(i + " ");
           }
           if (i % (5*3) == 0){
               System.out.println();
           }
       }*/
       /* while循环输出1-1000之间被5整除的数,每行输出3个
       int i = 1;
       while(i <= 1000){
           if (i % 5 == 0){
               System.out.print(i + " ");
           }
           if (i % (5*3) == 0){
               System.out.println();
           }
           i++;
       }*/
       /* 九九乘法表
       for (int i = 1;i <= 9;i++){
           for (int j = 1;j <= i;j++){
               System.out.print(j + "*" + i + "=" + (i * j) + " ");
           }
           System.out.println();
       }*/
       /*输出了一个心型图案
       for (int i = 0;i < 4;i++){
           if (i % 2 ==0) {
               for (int j = 0; j < 9; j++) {
                   if (j == 2 || j == 6) {
                       System.out.print("*");
                   } else {
                       System.out.print("-");
                   }
               }
           }else if (i == 1){
               for (int k = 0;k < 9;k++){
                   if (k == 1 || k == 4 || k == 7) {
                       System.out.print("*");
                   } else {
                       System.out.print("-");
                   }
               }
           }else{
               for (int l = 1;l <= 9;l++){
                   if (l == 5){
                       System.out.print("*");
                   }else{
                       System.out.print("-");
                   }
               }
           }
           System.out.println();
       }*/
       /*交叉图形
       for (int i = 0;i < 10;i++){
           for (int j = 0;j < 10;j++){
               if (j == i||j == 10-i-1){
                   System.out.print("&");
               }else {
                   System.out.print("-");
               }
           }
           System.out.println();
       }*/
       /* for循环输出打印三角形
       for (int i = 1;i <= 5;i++){
           for (int j = 9;j >= 1;j--){
               if (j > (5 - 1 + i)){
                   System.out.print(" ");
               }else if (j < (5 + 1 - i)){
                   System.out.print(" ");
               }
               else{
                   System.out.print("*");
               }
           }
           System.out.println();
       }*/
       /* for循环输出打印三角形
       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流程控制的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

PHP中的流程控制

Java中的流程控制

Java开发技术栈:Java基础语法流程控制语句运算符

在导航控制器中杀死片段