Java基础语法:逻辑控制

目录

  • 一、逻辑控制语句
    • 1. 顺序结构
    • 2. 分支结构
      • 2.1 if 语句
    • 2.2 switch 语句
    • 3. 循环结构
      • 3.1 while 循环
        • 3.2 break
          • 3.3 continue
            • 3.4 for 循环
              • 3.5 do while 循环
              • 二、输入输出方式
                • 1. 输出到控制台
                  • 1.基本语法
                  • 2.代码示例
                  • 3.格式化输出表(随用随查)
                • 2. 从键盘输入
                  • 1.读入一个字符(不推荐使用)
                  • 2.使用 Scanner 读取字符/字符串/整数/浮点数/布尔值
              • 三、猜数字游戏
                • 1.首先我们要知道在 Java 中随机数是怎么生成的。
                • 四、总结

                  一、逻辑控制语句
                  1. 顺序结构
                  像我们写的代码,执行时会按照从上到下一行一行的执行。这就是顺序结构,不同的顺序,结果可能就不一样。如
                  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{// 条件都不满足时执行的代码}

                  但是从形式上我们就可以看出还是有一些不同的
                  1.条件表达式必须是布尔值,不能像 C 语言一样直接使用一个数值,如
                  int a = 10; if(a){System.out.println(a); }

                  这种代码就是错的,条件必须是布尔值
                  int a = 10; if(a > 0){System.out.println(a); }

                  这种代码就是正确的
                  2.代码风格问题,比如我写 C 语言时喜欢把一对大括号并列在行首。但是在 java 中更推荐上述三种形式那样的风格,将 { 放在 if 或 else 同一行
                  3.还要注意悬垂 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 语言是一样的
                  【Java基础语法:逻辑控制】
                  3.4 for 循环
                  Java 中的 for 循环和 C 语言中的也很类似,只有一个差异
                  for(表达式1; 表达式2; 表达式3) 中的表达式2是循环的判断条件,要使用布尔值

                  3.5 do while 循环
                  Java 中的 do while 循环也是和 C 语言很类似,只有一个差异
                  while 中的循环条件只能是布尔值
                  但是一般不推荐使用,因为它至少会执行一次循环,不注意可能会犯错

                  二、输入输出方式
                  1. 输出到控制台

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


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


                  3.格式化输出表(随用随查)
                  转换符 类型 例子 输出结果
                  d 十进制整数 ("%d",100) 100
                  x 十六进制整数 ("%x",100) 64
                  o 八进制整数 ("%o",100) 144
                  f 定点浮点数 ("%f",100f) 100.000000
                  e 指数浮点数 ("%e",100f) 1.000000e+02
                  g 通用浮点数 ("%g",100f) 100.000
                  a 十六进制浮点数 ("%a",100) 0x1.9p6
                  s 字符串 ("%s",100) 100
                  c 字符 ("%d",‘1') 1
                  b 布尔值 ("%b",100) true
                  h 散列码 ("%h",100) 64
                  % 百分号 ("%.2f%%",2/7f) 0.29%

                  2. 从键盘输入

                  1.读入一个字符(不推荐使用) 直接使用 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基础语法:逻辑控制
                  文章图片

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

                  2.使用 Scanner 读取字符/字符串/整数/浮点数/布尔值 1.首先需要导入 util 包 import java.util.Scanner; ,在 IDEA 中,其可以通过输入 Scanner 后直接回车快速导入
                  2.然后再构造一个 Scanner 对象并与”标准输入流“ System.in 关联: Scanner 对象名 = new Scanner(System.in);
                  3.再就可以通过 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();

                  来读取掉之前的回车。
                  3.我们知道在 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 该怎么写呢?

                  1.首先我们要知道在 Java 中随机数是怎么生成的。
                  1.首先需要导入 util 包 import java.util.Random; ,在 IDEA 中,其可以通过输入 Random 后直接回车快速导入
                  2.然后通过 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("很遗憾,你猜的数字大了!"); }}}}


                  四、总结 本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

                    推荐阅读