Java 基础语法中的逻辑控制

作者:吞吞吐吐大魔王 时间:2022-11-22 16:30:59 

目录
  • Java 基础语法中的逻辑控制

    • 一、逻辑控制语句

      • 1. 顺序结构

      • 2. 分支结构

      • 3. 循环结构

    • 二、输入输出方式

      • 1. 输出到控制台

      • 2. 从键盘输入

    • 三、猜数字游戏

      • 四、总结

      Java 基础语法中的逻辑控制

      一、逻辑控制语句

      1. 顺序结构

      像我们写的代码,执行时会按照从上到下一行一行的执行。这z就是顺序结构,不同的顺序,结果可能就不一样。如


      System.out.println(1)
      System.out.println(2)    
      System.out.println(3)

      该代码结果为 1(换行)2(换行)3,但是如果把顺序改变结果就变了


      System.out.println(2)
      System.out.println(3)    
      System.out.println(1)

      该代码结果就变为 2(换行)3(换行)1

      2. 分支结构

      2.1 if 语句

      和 C 语言一样,在 Java 中 if 语句也有三种基本的形式

      形式一


      if(布尔表达式){
         // 条件满足时执行的代码
      }

      形式二


      if(布尔表达式){
         // 条件满足时执行的代码
      }else{
         // 条件不满足时执行的代码
      }

      形式三


      if(布尔表达式1){
         // 条件1满足时执行的代码
      }else if(布尔表达式2){
         // 条件2满足时执行的代码
      }else{
         // 条件都不满足时执行的代码
      }

      但是从形式上我们就可以看出还是有一些不同的

      • 条件表达式必须是布尔值,不能像 C 语言一样直接使用一个数值,

      如:


      int a = 10;
      if(a){
         System.out.println(a);
      }

      这种代码就是错的,条件必须是布尔值


      int a = 10;
      if(a > 0){
         System.out.println(a);
      }


      这种代码就是正确的

      • 代码风格问题,比如我写 C 语言时喜欢把一对大括号并列在行首。但是在 java 中更推荐上述三种形式那样的风格,将 { 放在 if 或 else 同一行

      • 还要注意悬垂 else 问题,记住 else 是与 最接近的 if 匹配。

      如:


      int a = 2;
      if(a>0)
      if(a>10)
       System.out.println("a > 10");
      else
      System.out.println("a > 0 && a <= 10");

      我们要知道,最下面的 else 是与与它最近的 if 匹配的

      2.2 switch 语句

      Java 中的 switch 语句和 C 语言中的几乎一样,大家如果不太熟悉 switch 以及该章所讲解的一些逻辑结构可以去看看我写的 C语言三大语句注意事项 。但是既然不是完全一样,那哪里有区别呢?

      在 Java 中,switch(表达式) 中的表达式是有类型限制的。

      它只能使用:整数(只包括 byte、short、int)、字符(char)、字符串(String)、枚举类型

      3. 循环结构

      3.1 while 循环

      舒服,Java 的 while 循环和 C 语言也是极其类似,只有一个小的差异

      while (表达式) 中的表达式必须是布尔值

      3.2 break

      break 的功能是:让最靠近包裹它的整个循环提前结束。这也是和 C 语言是一样的

      3.3 continue

      continue 的功能是:跳过本次循环,立即进入下次循环。这也是和 C 语言是一样的

      3.4 for 循环

      Java 中的 for 循环和 C 语言中的也很类似,只有一个差异

      for(表达式1;表达式2;表达式3) 中的表达式2是循环的判断条件,要使用布尔值

      3.5 do while 循环

      Java 中的 do while 循环也是和 C 语言很类似,只有一个差异

      while 中的循环条件只能是布尔值

      但是一般不推荐使用,因为它至少会执行一次循环,不注意可能会犯错

      二、输入输出方式

      1. 输出到控制台

      基本语法:


      System.out.println(msg);  // 输出一个字符串,自带换行
      System.out.print(msg);   // 输出一个字符串,不带换行
      System.out.printf(format,msg); // 格式化输出,括号内内容类似于 C 语言的 printf

      代码示例


      int a = 10;
      System.out.println(a);   // 输出 a,自带换行
      System.out.print(a);   // 输出 a,不带换行
      System.out.printf("%d\n",a); // 格式化输出,括号内内容类似于 C 语言的 printf

      格式化输出表(随用随查)

      Java 基础语法中的逻辑控制

      2. 从键盘输入

      读入一个字符(不推荐使用)

      直接使用 System.in.read() 可以读入一个字符,但是需要搭配异常处理。如果不搭配异常,如下面代码就会编译出错


      public static void main(String[] args) {
             System.out.print("Enter a char:");
             char i = (char)System.in.read();
             System.out.println("The char is :" + i);
         }

      我们需要将鼠标放到 read 上面,再按住 Alt + Enter 键就会出现

      Java 基础语法中的逻辑控制

      再点击第一个或者第二个就不会报错了。这里其实是处理了异常,但是一个简单的读入字符就要这么复杂所以不推荐使用。

      使用 Scanner 读取字符/字符串/整数/浮点数/布尔值

      • 首先需要导入 util 包 import java.util.Scanner; ,在 IDEA 中,其可以通过输入 Scanner 后直接回车快速导入

      • 然后再构造一个 Scanner 对象并与”标准输入流“ System.in 关联: Scanner 对象名 = new Scanner(System.in);

      • 再就可以通过 Scanner 类的各种方法实现输入操作了


      import java.util.Scanner;

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

      int a = in.nextInt();   //读入一个整数
             double b = in.nextDouble();  //读入一个浮点数
             boolean c = in.nextBoolean(); //读入一个布尔值
             String s = in.next();   //读入一个字符串
         }
      }

      但是要注意,上述读入字符串是按空白符当作分隔符的,故只能读入第一个空格之前的字符。如果想要读取该行的所有字符(包含空格),应该使用


      String s = in.nextLine();

      但是使用这个方法还是有很大的缺陷,如果这行代码上面还有其他读入的语句,可能这行代码就不会实行。因为上一行的回车可能被它读入,直接这行结束。因此,只能将其放在读入代码的第一个或者在它前面加一个


      in.nextLine();

      来读取掉之前的回车。

      我们知道在 C 语言中可以写类似于这样的代码输入多组数据


      int a;
      while(scanf("%d",&a) != EOF)
      {
         // 内容
      }

      在 C++ 中我们也可以写类似于这样的代码输入多组数据


      int a;
      while(cin>>a)
      {
         // 内容
      }

      那么在 Java 中怎么做呢?代码如下


      Scanner in = new Scanner(System.in);
      while(in.hasNextInt()){
         int a = in.nextInt();
         // 内容
      }

      并且在 IDEA 上我们可以手动输入 Ctrl + D 结束,在 Windows 的 cmd 上 我们手动输入 Ctrl + Z 结束,在 Linux 或 Mac 上,输入 Ctrl + D 结束

      三、猜数字游戏

      学 C 语言的时候我们可能都接触过随机数的生成,或者直接写一个猜随机数的游戏。那么使用 Java 该怎么写呢?

      首先我们要知道在 Java 中随机数是怎么生成的。

      • 首先需要导入 util 包 import java.util.Random; ,在 IDEA 中,其可以通过输入 Random 后直接回车快速导入

      • 然后通过 Random 类中的方法生成我们想要的,

      如:


      import java.util.Random;

      public class TestDemo {
         public static void main(String[] args) {
             Random random = new random(); // 默认随机种子是系统时间
             int rand = random.nextInt(bound:100) + 1;
             // random.nextInt(bound:100) 是生成[0,100)间的随机整数
         }
      }

      接下来就是很简单了,只要我们输入的数字与随机数字进行一下比较。直到判断正确再退出就可。

      故最终的代码是


      public class TestDemo {

      public static void main(String[] args) {
             Scanner scanner = new Scanner(System.in);
             Random random = new Random();
             int rand = random.nextInt(100) + 1;
             while (true){
                 System.out.print("请输入你所猜测的数字:");
                 int num = scanner.nextInt();
                 if(num == rand){
                     System.out.println("恭喜你,猜对了!");
                     break;
                 }else if(num < rand){
                     System.out.println("很遗憾,你猜的数字小了!");
                 }else{
                     System.out.println("很遗憾,你猜的数字大了!");
                 }
             }
         }
      }

      四、总结

      这章讲了 Java 的逻辑控制结构,包含了顺序结构、顺序结构和分支结构。还讲了 Java 的输入输出方式。并在最后用 Java 程序写了一个简单的猜数字游戏。我们可以发现,很多都是和 C 语言类似的,这也降低了我们学习的难度。

      来源:https://blog.csdn.net/weixin_51367845/article/details/119581808

      标签:Java,逻辑,控制
      0
      投稿

      猜你喜欢

    • 详解JAVA类加载机制

      2023-11-08 04:05:16
    • 解决Android 5.1限制外置SD卡写入权限的问题

      2021-08-05 03:54:41
    • Android动画之小球拟合动画实例

      2023-06-11 00:47:46
    • Springboot工具类FileCopyUtils使用教程

      2023-10-15 18:56:36
    • Android多线程学习实例详解

      2022-02-17 19:00:56
    • Android使用MulticastSocket实现多点广播图片

      2023-01-16 06:13:57
    • C#遍历指定目录下所有文件的方法

      2021-08-29 05:52:44
    • ViewPager判断是向左划还是右划的实例

      2023-12-10 04:53:18
    • Springboot+SpringSecurity+JWT实现用户登录和权限认证示例

      2021-11-14 11:06:11
    • 散列表的原理与Java实现方法详解

      2023-06-06 06:46:29
    • Spring Boot 实现配置文件加解密原理

      2023-11-23 17:48:46
    • 基于springboot+vue实现垃圾分类管理系统

      2023-04-17 08:39:11
    • c#语言使用Unity粒子系统制作手雷爆炸

      2021-10-11 11:13:46
    • @Autowired注解在抽象类中失效的原因及解决

      2021-07-15 06:12:04
    • SpringBoot 应用程序测试实现方案

      2021-12-18 04:27:54
    • SpringSecurity rememberme功能实现过程解析

      2021-12-20 05:22:08
    • ZooKeeper入门教程一简介与核心概念

      2022-11-24 18:36:00
    • Android串口通信之串口读写实例

      2023-11-04 00:11:03
    • Android结合xml实现帧动画

      2023-10-07 22:57:51
    • Java Redis Redisson配置教程详解

      2022-10-13 06:32:39
    • asp之家 软件编程 m.aspxhome.com