Java基础语法 – 流程控制

流程控制分类

流程控制:通过语句,控制程序的执行流程

  • 顺序结构
  • 分支结构(if switch)
  • 循环结构(for while do-while)

分支结构

if结构

if(条件表达式){
语句块;
}
  • 若语句体中只有一条语句,那么大括号{}可以省略不写(尽量不要不写,有的语句可能会被当作两条)
if(条件表达式){
语句块1;
}else{
语句块2;
}
  • 条件为真,执行语句块1,否则执行语句块2
if(条件表达式){
语句块1;
}else if(条件表达式2){
语句块2;
}else if(条件表达式3){
语句块3;
}......
else{
语句块n;
}

Switch结构

switch(表达式){
case 值1:
语句块1;
break
case 值2:
语句块2;
break;
......
default:
语句块n;
break;

}
  • 表达式:取值为byte short int cha 枚举String`
  • case:被匹配的值
  • break:中断switch语句,取消后续匹配
  • default:不符合所有case时默认语句
  • case的值不可重复

case穿透

当其中一个case没有写break的时候,会发生case穿透,后续的case不再具有匹配效果,而会直接运行其代码块的语句,直到遇到break停下来。

利用这个原理,可以对case进行合并

static void Score(){
      Scanner scan = new Scanner(System.in);
      while (true) {
          System.out.print("请输入成绩");
          int number = scan.nextInt();
          switch (number / 10) {
              case 0:
              case 1:
              case 2:
              case 3:
              case 4:
              case 5:
                  System.out.println("成绩不合格,继续努力!");
                  break;
              case 6:
              case 7:
              case 8:
              case 9:
              case 10:
                  System.out.println("成绩合格!继续保持!");
                  break;
              default:
                  System.out.println("输入不合法,请重试");
          }
      }
  }

当输入一个50后,会从0开始向下穿透,符合5,则输出信息,停止后续匹配,实现case的合并

若多个case需要执行相同的语句,可以考虑使用case穿透

循环结构

for循环

循环:重复执行语句

for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}

输出1~100所有整数和

public class 循环输出100内偶数和 {
  public static void main(String[] args) {
      int sum = 0;
      for (int i = 0; i < 100; i++) {
          if (i % 2 == 0) {
              sum = sum + i;
          }
      }
      System.out.println("100内所有的偶数和为:" + sum);
  }
}

最大公约数和最小公倍数

import java.util.Scanner;
public class 求最大公约数和最小公倍数 {
  public static void main(String[] args) {
      int m,n,gys=0,gbs=0;
      Scanner scan = new Scanner(System.in);
      System.out.print("请输入第一个整数:");
      m = scan.nextInt();
      System.out.print("请输入第二个整数:");
      n = scan.nextInt();
      int big = (m>n)?m:n;
      int small=(m>n)?n:m;
      //最大公约数
      for (int i=small;i>=1;i--){
          if (m % i == 0 && n % i == 0){
              gys = i;
              break;
          }
      }
      //最小公倍数
      for (int i = big;i< m * n ; i++ ){
          if (i % m == 0 && i % n == 0){
              gbs = i;
              break;
          }
      }
      System.out.println("最大公约数为"+gys);
      System.out.println("最小公倍数为"+gbs);
  }
}

水仙花数

  • 三位数
  • 个位、十位、百位的数的立方和不能为原数
public class 求解水仙花数 {
  public static void main(String[] args) {
      System.out.println("求解水仙花数");
      for (int i = 100;i<1000;i++){
          if (i == (i%10)*(i%10)*(i%10)+(i%100/10)*(i%100/10)*(i%100/10)+(i/100)*(i/100)*(i/100)){
              System.out.println(i);
          }
      }
  }
}

九九乘法表

public class 九九乘法表 {
  public static void main(String[] args){
      for (int i = 1;i<=10;i++){
          for (int j = 1 ;j<=i;j++){//第j列有最多i个式子
              System.out.print(j + "*" + i + "=" + (i*j) + " " );
          }
          System.out.println();//输出完一行换行
      }
  }
}

while循环

初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}

从键盘读入个数不确定个整数,判断输入的正数和负数的个数,按0结束程序

import java.util.Scanner;
public class 判断正数负数个数 {
  public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
      int zhengshu=0,fushu=0,number=0;
      while(true){
          number = scan.nextInt();
          if(number > 0){
              zhengshu +=1;
          }else if (number<0){
              fushu +=1;
          }
          if (number == 0){
              break;
          }
      }
      System.out.println("你输入的正数共有"+zhengshu+"个");
      System.out.println("你输入的负数共有"+fushu+"个");

  }
}

do-while循环

先执行,后判断,至少执行一次循环体

初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);

使用场景

  • 明确循环次数,使用for循环
  • 不明确循环次数,使用while循环
  • 基本不适用do-while循环

跳转控制语句

  • continue
  • break

continue可以结束本次循环,进入下一次循环

// 打印除了5以外1-10的数字
for(int i=1;i<=10;i++){
if(i==5){
continue;
}
System.out.println(i);
}

break会结束循环

//打印1~4
for(int i=1;i<=10;i++){
if(i==5){
break;
}
System.out.println(i);
}

标号

package 第一章基础;

import java.util.Scanner;

public class 跳转控制 {
  public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      while(true){
          System.out.println("请输入成绩:");
          int score = scanner.nextInt();
          switch (score/10){
              case 0:
              case 1:
              case 2:
              case 3:
              case 4:
              case 5:
                  System.out.println("成绩不合格,继续努力!");
                  break;
              case 6:
              case 7:
              case 8:
              case 9:
              case 10:
                  System.out.println("成绩合格!继续保持!");
                  break;
              default:
                  System.out.println("输入不合法,请重试");
          }
      }
  }
}

在上面的程序中,使用break只能结束switch的循环,而无法结束while的循环,为了结束指定的循环,需要使用标号

package 第一章基础;

import java.util.Scanner;

public class 跳转控制 {
  public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      // 使用标号
      loop:while(true){
          System.out.println("请输入成绩:");
          int score = scanner.nextInt();
          switch (score/10){
              case 0:
              case 1:
              case 2:
              case 3:
              case 4:
              case 5:
                  System.out.println("成绩不合格,继续努力!");
                  // 跳出指定标号的循环
                  break loop;
              case 6:
              case 7:
              case 8:
              case 9:
              case 10:
                  System.out.println("成绩合格!继续保持!");
                  // 跳出指定标号的循环
                  break loop;
              default:
                  System.out.println("输入不合法,请重试");
          }
      }
  }
}

Random随机数

作用:产生一个随机数

导包

import java.util.Random;

实例化

Random r = new Random();

获取随机数

int number = r.nextInt(10);// 0~10,左闭右开
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇