Java 基础语法中的逻辑控制

 更新时间:2021年09月03日 14:36:26   作者:吞吞吐吐大魔王  
这篇文章主要介绍了Java 基础语法中的逻辑控制的相关资料,需要的朋友可以参考下面文章内容

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

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

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 键就会出现

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

使用 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 语言类似的,这也降低了我们学习的难度。

到此这篇关于Java 基础语法中的逻辑控制的文章就介绍到这了,更多相关Java 逻辑控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java截取字符串的几种常用方法

    Java截取字符串的几种常用方法

    这篇文章主要给大家介绍了关于Java截取字符串的几种常用方法,在Java编程语言中,String类提供了用于操作字符串的丰富方法,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • 基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码

    基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码

    这篇文章主要介绍了基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • SpringBoot添加License的多种方式

    SpringBoot添加License的多种方式

    License指的是版权许可证,当我们开发完系统后,如果不想让用户一直白嫖使用,比如说按时间续费,License的作用就有了。我们可以给系统指定License的有效期,控制系统的可用时间。
    2021-06-06
  • Java异常分类以及几种处理机制分析讲解

    Java异常分类以及几种处理机制分析讲解

    在Java的广阔宇宙中,有一群特殊的“超级英雄”,它们在代码世界中穿梭,守护着程序的正常运行——它们就是“异常”,这些英雄们,各司其职,保护着程序免受错误的侵扰,今天,我们将深入这个神秘的世界,全面解析异常的分类,掌握异常的处理机制
    2024-07-07
  • 如何通过Java打印Word文档

    如何通过Java打印Word文档

    这篇文章主要介绍了如何通过Java打印Word文档,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java Vector类详解及实例代码

    Java Vector类详解及实例代码

    这篇文章主要介绍了Java Vector类详解及实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • 利用Java如何获取Mybatis动态生成的sql接口实现

    利用Java如何获取Mybatis动态生成的sql接口实现

    MyBatis 的强大特性之一便是它的动态SQL,下面这篇文章主要给大家介绍了关于利用Java如何获取Mybatis动态生成的sql接口实现的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • feign之间传递oauth2 token的问题及解决方案

    feign之间传递oauth2 token的问题及解决方案

    这篇文章主要介绍了feign之间传递oauth2 token的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解Maven Docker镜像使用技巧

    详解Maven Docker镜像使用技巧

    这篇文章主要介绍了详解Maven Docker镜像使用技巧,Maven是目前最流行的Java项目管理工具之一,提供了强大的包依赖管理和应用构建功能。本文以Maven为例介绍了Docker在应用构建中的一些常见技巧。
    2018-06-06
  • java一个接口多个实现类的调用方式

    java一个接口多个实现类的调用方式

    这篇文章主要给大家介绍了关于java一个接口多个实现类的调用方式的相关资料,经测试确认,当一个接口有多个实现时,调用时只会执行一个,有时候需要多个实现调用,需要的朋友可以参考下
    2023-09-09

最新评论