Java基础语法(四)——程序逻辑控制

191 阅读11分钟

文章目录

\

接上篇Java基础语法(三)——运算符


\

Java基础语法(四)——程序逻辑控制


\

本次介绍内容大纲:


在这里插入图片描述


\

一、顺序结构

\

1.什么是顺序结构?

\

  程序按照我们代码的书写顺序一行一行的执行,如果调整代码的书写顺序, 则执行顺序也发生变化

\

2.顺序结构的示例

\

  下面我将举两个代码的示例,带大家了解一下顺序结构的具体使用

\

代码一

在这里插入图片描述

\

编译实现效果

在这里插入图片描述
按照我们所想的那样,顺序结构按照我们代码书写顺序,一行一行执行代码。打印出 I like Beijng

  如果我们改变打印顺序,在顺序结构下代码的执行又是如何实现的呢?

\

代码二

在这里插入图片描述

编译实现效果

在这里插入图片描述
\

  当我们改变代码的顺序,那么执行时按照顺序结构,打印的内容也会随之而改变。

\

二、选择结构

\

1. if 语句

\

(1)基本书写格式

\

书写格式一

在这里插入图片描述

书写格式二

在这里插入图片描述

书写格式三 ----多分支的情况

在这里插入图片描述
这里的三种书写规范,代表了 if 语句的多种情况。我们可以根据实际情况进行自主选择。

  好了,接下来我们进行几道选择语句的练习编程题目.

\

(2) 练习

\

练习一

\

题目要求:

判断奇偶数

代码实现:

public class Main {

    //判断奇偶数
    public static void main(String[] args) {
        int num = 10;
        if (num % 2 == 0) {
             System.out.println("num 是偶数");
        } else {
             System.out.println("num 是奇数");
        }
    }

}

编译实现的效果:

在这里插入图片描述

  我们使用了 if …else 语句来区分奇数、偶数,从而进行数字的奇偶判断。

\

练习二

\

题目要求:

判定一个数字是正数还是负数

代码实现:

  public static void main(String[] args) {
        int num = 10;
        if (num > 0) {
          System.out.println("num 是正数");
        } else if (num < 0) {
          System.out.println("num 是负数");
        } else {
          System.out.println("num 是 0");
        }
    }

编译效果实现:

在这里插入图片描述

  这里我们就使用了多支选择语句的用法,进行三个选择时,用 if…else if…else 进行程序结构控制,达成我们想要实现的效果.

\

练习三

\

题目要求:

判定某一年份是否是闰年

代码实现:

    public static void main(String[] args) {
        int year = 2000;
        if (year % 100 == 0) {
            // 判定世纪闰年
            if (year % 400 == 0) {
                System.out.println("是闰年");
            } else {
                System.out.println("不是闰年");
            }
        } else {
            // 普通闰年
            if (year % 4 == 0) {
                System.out.println("是闰年");
            }

        }
    }

编译实现效果:

在这里插入图片描述
我们在这个练习题中,使用了if 语句的嵌套使用,从而更方便的达成我们的题目要求.

\

(3)注意事项

\

1.悬垂 else 问题

int x = 10;
int y = 10;
if (x == 10) 
   if (y == 10)
   System.out.println("aaa");
else
 System.out.println("bbb");

\

  if 后面可以不加上大括号,但是只能执行跟在其后面的一条语句,在这个代码中,我们视觉的看到 else 和第一个 if 相匹配 , 但是 在不加大括号的情况下,else 只和 最近的 if 相匹配.

\

  还有,为了避免出现自己的判断错误,尽量在需要加大括号的语句全部加上大括号(不要省略).

\

2. 代码风格问题

// 风格1
      int x = 10;
      if (x == 10) {
          // 满足条件
      } else {
          // 不满足条件
      }


// 风格2
      int x = 10;
      if (x == 10) {
          // 满足条件
      }
      else
      {
          // 不满足条件
      }

\

  在 Java 中尽管两种代码风格都是合法的,但是Java还是更推荐 风格1

  { 放在 if / else 同一行.

\

3. 分号问题

      int x = 20;
      if (x == 10); {
      System.out.println("hehe");
      }
   // 运行结果
    hehe

\

  我们可以看到在if()之后不小心加上了;,在此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块.

\

  这样的错误我们要尽量避免.

\

2. switch … case 语句

\

(1)基本语法

在这里插入图片描述

(2)代码示例

int day = 1;
switch(day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期日");
        break;
    default:
        System.out.println("输入有误");
        break; }

\

  根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句.

\

  如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.

\

代码实现效果:

在这里插入图片描述

\

  我们建议一个 switch 语句最好都要带上 default.且default的位置不固定.

\

(3)注意事项

\

注意事项1

\

break 不要遗漏, 否则会失去 “多分支选择” 的效果

代码示例:

public static void main(String[] args) {
        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");

            case 2:
                System.out.println("星期二");

            case 3:
                System.out.println("星期三");

            case 4:
                System.out.println("星期四");

            case 5:
                System.out.println("星期五");

            case 6:
                System.out.println("星期六");

            case 7:
                System.out.println("星期日");

            default:
                System.out.println("输入有误");
                 }
    }

实现效果:

在这里插入图片描述

\

注意事项2

\

switch 中的值只能是 整数|枚举|字符|字符串

\

之前我们的代码示例switch()中跟的都是 int 类型的数据

那么switch()中的值可以是其他类型吗?

我们对其它类型的数据进行试验…

\

long

在这里插入图片描述
所以 switch ()中的数据不能是 long 类型

\

float

在这里插入图片描述
所以 switch ()中的数据不能是 float 类型

\

double

在这里插入图片描述
所以 switch ()中的数据不能是 double 类型

\

char

在这里插入图片描述
在这里插入图片描述
switch()中可以是 char 类型的数据

\

String

在这里插入图片描述

代码实现效果:

在这里插入图片描述
\

所以 switch()中的数据可以是 String 类型的.

总之,switch 中的值只能是 整数|枚举|字符|字符串.

\

注意事项3

\

switch 不能表达复杂的条件

如果是这样的代码:

在这里插入图片描述
\

  这样的题目条件,明显使用 if 语句表达更为方便 , 使用 switch 语句则无法表示.

\

三、循环结构

\

循环中的关键字

\

break

\

功能:  break 的功能是让循环提前结束,执行到 break 就会让循环结束,直接跳出循环

\

coutinue

\

功能:  continue 的功能是跳过这次循环, 立即进入下次循环.

\

1.while 循环语句

\

(1)基本语法格式

\

在这里插入图片描述
了解了while 语句的语法结构,那么我们来进行对 while 语句的代码练习.

\

(2)练习

\

练习一

\

题目要求:

打印 1 - 10 的数字

代码实现:

在这里插入图片描述

实现效果:

在这里插入图片描述
\

练习二

\

题目要求:

计算 1 - 100 的和

代码实现:

在这里插入图片描述
实现效果:

在这里插入图片描述
\

(3)注意事项

\

1.和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

2.和 if 类似, while 后面的 { 建议和 while 写在同一行.

3.和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

\

2.for 循环语句

\

(1)基础语法

在这里插入图片描述
\

相比于 while 循环, for 循环将这三个部分合并在一起, 写代码时不容易遗漏.

\

  了解了 for 语句的语法结构,那么我们来进行对 while 语句的代码练习.

\

(2) 练习

\

  我们将上面两道 while 循环的练习题改成用for 循环来表示

\

练习一

\

题目要求:

打印 1 - 10 的数字

代码实现:

在这里插入图片描述

实现效果:

在这里插入图片描述
\

练习二

\

题目要求:

计算 1 - 100 的和

代码实现:

在这里插入图片描述

实现效果:

在这里插入图片描述
\

3.do … while 循环语句

\

(1)基本语法

在这里插入图片描述

(2)练习

\

打印 1 -10的数字

在这里插入图片描述
实现效果:

在这里插入图片描述
\

(3)注意事项

  1. do while 循环最后的分号不要忘记
  1. 一般 do while 很少用到, 更推荐使用 for 和 while.

\

四、输入输出的表示

\

1.输出到控制台

\

(1)基础语法

\

System.out.println(msg); 输出一个字符串, 带换行

System.out.print(msg); 输出一个字符串, 不带换行

System.out.printf(format, msg); 格式化输出

\

(2)注意点

\

println 输出的内容自带 \n, print 不带 \n

printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

\

(3)格式化输出

\

什么是格式化输出?

将数据按以下类型(部分)进行输出:

\

转换符类型举例
d十进制整数( “%d” ,10)
x十六进制整数("%x", 100)
f单精度浮点数("%f",100.0)
s字符串("%s",“abc”)
c字符("%c",‘1’)

\

  我们只是将部分格式化的数据列举出来,具体的格式化类型请大家自行查找.这种格式化打印在C语言中十分常见.

\

2.从键盘输入

\

(1)使用Scanner 读取字符串/整数/浮点数

\

首先我们需要导入 util 包

import java.util.Scanner; // 需要导入 util 包

\

从键盘输入一个整形

public static void main(String[] args) {

        // 输入一个整型
        Scanner scanner = new Scanner(System.in);
        int a=scanner.nextInt();

        // 输入一个数打印一个数
        System.out.println(a);
    }

实现效果:

在这里插入图片描述
这里的 nextInt 是读取一个整形.
在这里插入图片描述

\

从键盘输入一个字符串

public static void main(String[] args) {

        // 输入一个字符串
        Scanner scanner = new Scanner(System.in);
        String a=scanner.nextLine();

        // 输入一个字符串打印一个字符串
        System.out.println(a);
    }

实现效果:

在这里插入图片描述
这里的 nextline —— 是输入一行,且遇到空格不会中止读取
在这里插入图片描述

\

从键盘输入一个浮点数

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double a = scanner.nextDouble();
        System.out.println(a);
    }

实现效果:

在这里插入图片描述
这里的 nextDouble 是输入一个双精度浮点数 .

在这里插入图片描述

\

(2)使用 Scanner 循环读取 N 个数字

\

代码实现:

import java.util.Scanner; 

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()){
            int a = scanner.nextInt();
            System.out.println(a);
        }
    }

实现效果:

在这里插入图片描述
\

我们实现多组输入数字,最后ctrl + D 停止循环.

下面是hasNext 的具体使用

在这里插入图片描述

(3)Java输入的建议

\

我们根据个人信息,输入输出如下

在这里插入图片描述

输入的类型依次是 字符串 整形 浮点型

显示效果如下:

在这里插入图片描述
好,我们第二次改变输入类型的顺序.

在这里插入图片描述
这次我们在输入时却碰到了一个问题…

在这里插入图片描述

\

  我们在输入整形数据18以后,按下回车,发现直接跳到了输入浮点型数据的内容,字符串类型直接跳过了,这样的输入就存在了问题.

  我们可以当作 把在输入整形后 的回车 当成了 输入字符串类型的内容,所以跳过了输入字符串.

  所以 对于 Java 的输入我们建议:把输入字符串放在最前面,字符串的前面不要输入整形或其他类型的数据.

\

五、猜数字游戏的实现

\

游戏规则:

\

  系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “低 了”, 如果输入的数字比该随机数大, 提示 “高了” , 如果输入的数字和随机数相等, 则提示 “猜对了”

\

1.编写过程

\

  下面是Random 的使用.
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
\

  好了,我们熟悉了Random 的使用,这个游戏我们首先要生成一个 在 0-100范围内的随机数

\

(1)生成随机数

 Randnum randNum = new Random();
 int randNum = Randdom.nextInt(100);

\

(2)输入你要猜的数字

    Scanner scanner = new Scanner(System.in);
     int num = scanner.nextInt();

\

(3)循环结构,进行数字比较

\

  将你猜的数字与随机数比较,如果猜小了,打印“你猜小了”,猜大了,打印“你猜大了”,猜对了,打印“你猜对了”,然后跳出循环. 没有猜对则一直比较.

\

  我们用while(true)来一直循环,当num== randNum 时 break跳出循环.

\

  Scanner scanner = new Scanner(System.in);

 while(true){
            System.out.print("请输入要猜的数字:>");
            int num = scanner.nextInt();
        if(num<randNum){
            System.out.println("你猜小了");
        }else if(num>randNum){
                System.out.println("你猜大了");
        }else{
            System.out.println("你猜对了");
            break;
        }
 }

\

2.完整代码实现

import java.util.Random;
import java.util.Scanner;

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

        Random random = new Random();
        int randNum = random.nextInt(100);
        //System.out.println(randNum);


        while(true){
            System.out.println("请输入数字:");
            int num=scan.nextInt();
            if(num<randNum){
                System.out.println("你猜小了");
            }
            else if(num==randNum){
                System.out.println("你猜对了");
                break;
            }
            else if(num>randNum){
                System.out.println("你猜大了");
            }
        }

    }

实现效果:

在这里插入图片描述

  好了,Java基础 – 程序逻辑控制的知识就分享到这里,希望大家看完之后多多练习,感谢大家的欣赏!!!


我的Java基础入门训练有练习的题目,大家可以关注哦 !
\

Java基础入门训练博客入口


\

谢谢大家的欣赏与关注!!!



\

完!