Java流程控制

Java控制流程

1.Scanner对象

我们可以通过Scanner类来获取用户的输入。

基本语法:

 Scanner scanner = new Scanner(System.in);

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

  • next():

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

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

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

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

  • nextLine():

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

    2. 可以获得空白。


输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果。

 package com.Du.Scanner;
 import java.util.Scanner;
 public class Demo{
     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="+sum)
        }
         System.out.println(m+"个数据和为"+sum)
         System.out.println(m+"个数据的平均数为"+(sum/m))
         
         scanne.close();
    }
 }

Scanner判断输入整数小数

 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()){
             int a = scanner.nextInt();
             System.out.println(a);
        }else{
             System.out.println("输入的不是整数")
        }
     System.out.println("请输入小数:")
         if(scanner.hasNextFloat()){
             float b = scanner.nextInt();
             System.out.println(b);
        }else{
             System.out.println("输入的不是小数")
        }
     scanner.close();
 }

2.顺序结构

3.选择结构

if单选择结构

语法:

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

if双选择结构

语法:

 if(布尔表达式){
     //如果true,将执行语句
 }else{
     //如果false,将执行语句
 }

if多选择结构

语法:

 if(布尔表达式){
      //如果布尔表达式为true,则执行语句
 }else if(布尔表达式){
      //如果布尔表达式为true,则执行语句
 }else if(布尔表达式){
      //如果布尔表达式为true,则执行语句
      ......
 }else{
      //如果以上都为false,则执行语句
 }

嵌套的if结构

语法:

 if(){
     if(){
         
    }
 }

switch多选择结构

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

语法:

 (String、byte、int...)  (expression) = (value)
 switch(expression){
     case value:
         //语句
         break;     //可选,用于强行退出,case具有穿透性。
     case value:
         //语句
         break;     //可选,用于强行退出,case具有穿透性。
      .........
     default:    
         //语句
         break;
 }
  • switch语句中的变量类型可以是:

    1. byte short int char

    2. 从JDK7开始,支持String

    3. case标签必须为字符串常量或字面量

4.循环结构

while循环

语法:

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

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

思考1+2+...+100=?

int a = 0;
int sum = 0;
while(a <= 100){
sum = sum + a;
a++;
}

do...while 循环

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

语法:

do{
//循环内容
}while(布尔表达式);
  • while先判断后执行,do...while先执行,后判断!


for循环

语法:

for(初始化;布尔表达式;迭代更新){
//代码语句
}
  • for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。

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

  1. 练习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;
    }
    }
  2. 练习2:用while or for循环输出1-1000之间能被5整除的数,每行3个

    for(int i = 1;i <= 1000;i++){
    if(i%5 == 0){
    System.out.print(i+"\t"); // "\t"为制表符,相当于tab键
    }
    if(i%(3*5) == 0){
    System.out.println();
    }
    }
  3. 练习3:打印九九乘法表

    for(int j = 1;j <= 9;j++){
    for(int i = 1;i <= 9;i++){
    System.out.print(j+"*"+i+"="+(j*i)+"\t");
    }
    System.out.println();
    }
    /* 1.打印第一列;
    2.把固定的1,替换成j,外面再加个循环包起来;
    3.去掉重复项,i<=j;
    4.调整样式。 */

增强for循环

语法:

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

5.break & continue

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

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

6.流程控制练习

打印三角形

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();
}

 

posted @ 2021-11-03 16:01  Duqm  阅读(212)  评论(0)    收藏  举报