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

文章目录

  • Java基础语法(四)——程序逻辑控制
  • 一、顺序结构
    • 1.什么是顺序结构?
    • 2.顺序结构的示例
  • 二、选择结构
  • 1. if 语句
  • (1)基本书写格式
  • (2) 练习
    • 练习一
    • 练习二
    • 练习三
  • (3)注意事项
    • 1.悬垂 else 问题
    • 2. 代码风格问题
    • 3. 分号问题
  • 2. switch .. case 语句
    • (1)基本语法
    • (2)代码示例
    • (3)注意事项
  • 三、循环结构
  • 循环中的关键字
  • 1.while 循环语句
  • (1)基本语法格式
  • (2)练习
    • 练习一
    • 练习二
  • (3)注意事项
  • 2.for 循环语句
  • (1)基础语法
  • (2) 练习
    • 练习一
    • 练习二
  • 3.do ... while 循环语句
  • (1)基本语法
  • (2)练习
  • (3)注意事项
  • 四、输入输出的表示
  • 1.输出到控制台
    • (1)基础语法
    • (2)注意点
    • (3)格式化输出
  • 2.从键盘输入
    • (1)使用Scanner 读取字符串/整数/浮点数
    • (2)使用 Scanner 循环读取 N 个数字
    • (3)Java输入的建议
  • 五、猜数字游戏的实现
    • 1.编写过程
    • (1)生成随机数
    • (2)输入你要猜的数字
    • (3)循环结构,进行数字比较
    • 2.完整代码实现
  • 完!


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



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



本次介绍内容大纲:


Java基础语法(四)——程序逻辑控制_第1张图片



一、顺序结构


1.什么是顺序结构?


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


2.顺序结构的示例


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


代码一

Java基础语法(四)——程序逻辑控制_第2张图片


编译实现效果

Java基础语法(四)——程序逻辑控制_第3张图片
  按照我们所想的那样,顺序结构按照我们代码书写顺序,一行一行执行代码。打印出 I like Beijng

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


代码二

Java基础语法(四)——程序逻辑控制_第4张图片

编译实现效果

Java基础语法(四)——程序逻辑控制_第5张图片

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


二、选择结构


1. if 语句


(1)基本书写格式


书写格式一

Java基础语法(四)——程序逻辑控制_第6张图片

书写格式二

Java基础语法(四)——程序逻辑控制_第7张图片

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

Java基础语法(四)——程序逻辑控制_第8张图片
  这里的三种书写规范,代表了 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 是奇数");
        }
    }

}

编译实现的效果:

Java基础语法(四)——程序逻辑控制_第9张图片

  我们使用了 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");
        }
    }

编译效果实现:

Java基础语法(四)——程序逻辑控制_第10张图片

  这里我们就使用了多支选择语句的用法,进行三个选择时,用 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("是闰年");
            }

        }
    }

编译实现效果:

Java基础语法(四)——程序逻辑控制_第11张图片
  我们在这个练习题中,使用了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)基本语法

Java基础语法(四)——程序逻辑控制_第12张图片

(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 中的语句.


代码实现效果:

Java基础语法(四)——程序逻辑控制_第13张图片


  我们建议一个 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("输入有误");
                 }
    }

实现效果:

Java基础语法(四)——程序逻辑控制_第14张图片


注意事项2


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


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

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

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


long

Java基础语法(四)——程序逻辑控制_第15张图片
所以 switch ()中的数据不能是 long 类型


float

Java基础语法(四)——程序逻辑控制_第16张图片
所以 switch ()中的数据不能是 float 类型


double

Java基础语法(四)——程序逻辑控制_第17张图片
所以 switch ()中的数据不能是 double 类型


char

Java基础语法(四)——程序逻辑控制_第18张图片
Java基础语法(四)——程序逻辑控制_第19张图片
switch()中可以是 char 类型的数据


String

Java基础语法(四)——程序逻辑控制_第20张图片

代码实现效果:

Java基础语法(四)——程序逻辑控制_第21张图片

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

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


注意事项3


switch 不能表达复杂的条件

如果是这样的代码:

Java基础语法(四)——程序逻辑控制_第22张图片

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


三、循环结构


循环中的关键字


break


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


coutinue


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


1.while 循环语句


(1)基本语法格式


Java基础语法(四)——程序逻辑控制_第23张图片
  了解了while 语句的语法结构,那么我们来进行对 while 语句的代码练习.


(2)练习


练习一


题目要求:

打印 1 - 10 的数字

代码实现:

Java基础语法(四)——程序逻辑控制_第24张图片

实现效果:

Java基础语法(四)——程序逻辑控制_第25张图片

练习二


题目要求:

计算 1 - 100 的和

代码实现:

Java基础语法(四)——程序逻辑控制_第26张图片
实现效果:

Java基础语法(四)——程序逻辑控制_第27张图片

(3)注意事项


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

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

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


2.for 循环语句


(1)基础语法

Java基础语法(四)——程序逻辑控制_第28张图片

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


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


(2) 练习


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


练习一


题目要求:

打印 1 - 10 的数字

代码实现:

Java基础语法(四)——程序逻辑控制_第29张图片

实现效果:

Java基础语法(四)——程序逻辑控制_第30张图片

练习二


题目要求:

计算 1 - 100 的和

代码实现:

Java基础语法(四)——程序逻辑控制_第31张图片

实现效果:

Java基础语法(四)——程序逻辑控制_第32张图片

3.do … while 循环语句


(1)基本语法

Java基础语法(四)——程序逻辑控制_第33张图片

(2)练习


打印 1 -10的数字

Java基础语法(四)——程序逻辑控制_第34张图片
实现效果:

Java基础语法(四)——程序逻辑控制_第35张图片

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

实现效果:

Java基础语法(四)——程序逻辑控制_第36张图片
这里的 nextInt 是读取一个整形.
在这里插入图片描述


从键盘输入一个字符串

public static void main(String[] args) {

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

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

实现效果:

Java基础语法(四)——程序逻辑控制_第37张图片
  这里的 nextline —— 是输入一行,且遇到空格不会中止读取
在这里插入图片描述


从键盘输入一个浮点数

public class Main {

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

实现效果:

Java基础语法(四)——程序逻辑控制_第38张图片
  这里的 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);
        }
    }

实现效果:

Java基础语法(四)——程序逻辑控制_第39张图片

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

下面是hasNext 的具体使用

Java基础语法(四)——程序逻辑控制_第40张图片

(3)Java输入的建议


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

Java基础语法(四)——程序逻辑控制_第41张图片

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

显示效果如下:

Java基础语法(四)——程序逻辑控制_第42张图片
好,我们第二次改变输入类型的顺序.

Java基础语法(四)——程序逻辑控制_第43张图片
这次我们在输入时却碰到了一个问题…

Java基础语法(四)——程序逻辑控制_第44张图片


  我们在输入整形数据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基础语法(四)——程序逻辑控制_第45张图片

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


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

Java基础入门训练博客入口



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




完!

你可能感兴趣的:(JavaSE,小白的进阶之路,java)