首页 > 编程语言 >Java逻辑控制语句

Java逻辑控制语句

时间:2024-07-31 10:27:20浏览次数:18  
标签:语句 逻辑 Java int System 循环 println out

一、Java的逻辑控制语句的大体分类:

二、顺序结构

1.顺序结构:即按顺序执行代码(从头到尾按顺序执行代码),如
public class Main{
    public static void main(String args[]){
        int num1  = 10;
        int num2 = 20;
        System.out.println(num1 + num2);//先输出30
        System.out.peintln("111");//再输出111
        System.out.peintln("222");//然后输出222
        System.out.peintln("333");//最后输出333
    }
}

三、选择结构(又叫分支结构)

 1.if语句
  • 语法格式:
    • 写法一:
      if(布尔表达式){
      //代码语句
      }

      代码示例:

      int x = 10;
      if (x > 5) {
          System.out.println("x 大于 5");
      }

    • 写法二:
      • if(布尔表达式) {
        //代码语句
        }else{
        //代码语句
        }

        代码示例:

        int x = 10;
        if (x > 15) {
            System.out.println("x 大于 15");
        } else {
            System.out.println("x 不大于 15");
        }

      • 写法三:
        if(布尔表达式){
        //代码语句
        }else if(布尔表达式){
        //代码语句
        }
        else{
        //代码语句
        }

        代码示例:

        int x = 10;
        if (x > 15) {
            System.out.println("x 大于 15");
        } else if (x > 5) {
            System.out.println("x 大于 5,但不大于 15");
        } else {
            System.out.println("x 不大于 5");
        }
        

  • 若if()的括号内的布尔表达式的结果为true则执行if语句内的代码。若if()括号内的值为flase,且还有else if()语句,若else if()的括号内的布尔表达式的值为true则执行else if语句内的代码,否则执行else语句内的代码;若else if()的括号内的布尔表达式的值为flase,则执行else语句内的代码
  • 注意事项:
    • if()语句和else if()语句的括号内必须为布尔表达式!!
    • 分号问题:
      int num = 1;
      if(num == 0);
      {
          System.out.println("hello world");//输出hello world
      }

      这段代码一定会输出hello world,因为无论如何System.out.println("hello world");这一句代码一定会实现。原因是if(num == 0);这一句代码后面有分号,有分号就证明if(num == 0)是一个单独的语句,if在执行的时候是不存在执行语句的,故会直接在判断完if()语句括号内的布尔表达式的真值之后继续向下执行,也就是继续向下执行System.out.println("hello world");

      //上面的代码等价于
      int num = 1;
      if(num == 0);
      System.out.println("hello world");//输出hello world

    • 悬垂else问题:if/else语句中可以不加大括号也能向下执行语句,但是只能执行一句,即跟if/else最近的语句

      int num1 = 10;
      if(num1%2!=0)
      System.out.println(num1 + "为奇数");//num1为奇数就执行这一句代码
      else
      System.out.println(num1 + "为偶数");//num1为偶数就执行这一句代码
      
      int num2 = 13;
      if(num2%2!=0)
      System.out.println(num2 + "为奇数");//if语句能管得到的只有这一句
      num2++;//这一句一定会执行
      System.out.println(num2);//输出num2为14

2.switch语句
  • 语法格式:
    switch(表达式){
        case 常量表达值1:{
                语句1;
                break;
            }
     case 常量表达值1:{
                语句1;
                break;
            }
     case 常量表达值1:{
                语句1;
                break;
            }
    …………
        default:{
                内容不满足时的执行语句;
                break;
            }
    }

  • switch(表达式)语句括号内表达式的值不能是float、double、long、boolean类型的数据,如switch(a>0)这个就会报错,因为a>0是boolean类型的语句,不能写在switch的括号里;byte、char、short、int、String、枚举类型可以写在switch()的括号里

    • 使用 int 类型的 switch 示例:

      public class SwitchExample {
          public static void main(String[] args) {
              int num = 2;
              String day = "Monday";
              
              // 使用 int 类型的 switch
              switch (num) {
                  case 1:
                      System.out.println("数字为1");
                      break;
                  case 2:
                      System.out.println("数字为2");
                      break;
                  default:
                      System.out.println("未知数字");
              }
              
              // 使用 String 类型的 switch
              switch (day) {
                  case "Monday":
                      System.out.println("星期一");
                      break;
                  case "Tuesday":
                      System.out.println("星期二");
                      break;
                  default:
                      System.out.println("其他星期几");
              }
          }
      }

    • 使用 String 类型的 switch 示例:

      public class StringSwitchExample {
          public static void main(String[] args) {
              String day = "Monday";
              
              switch (day) {
                  case "Monday":
                      System.out.println("星期一");
                      break;
                  case "Tuesday":
                      System.out.println("星期二");
                      break;
                  case "Wednesday":
                      System.out.println("星期三");
                      break;
                  default:
                      System.out.println("其他星期几");
              }
          }
      }
      

    • 使用枚举类型的 switch 示例:

      public class EnumSwitchExample {
          enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
          
          public static void main(String[] args) {
              Day day = Day.MONDAY;
              
              switch (day) {
                  case MONDAY:
                      System.out.println("星期一");
                      break;
                  case TUESDAY:
                      System.out.println("星期二");
                      break;
                  case WEDNESDAY:
                      System.out.println("星期三");
                      break;
                  default:
                      System.out.println("其他星期几");
              }
          }
      }

  • case后的常量值不能重复,否则会报错,如 

                case 1:
                System.out.println("数字为1");
                break;
            case 1:
                System.out.println("数字为2");
                break;

        这个代码会编译出错,因为case后的常量值重复了

  • switch()的括号内不能表达复杂的条件,比如num>10&&num<20这就不行,放进switch的括号里会报错
  • switch语句可以嵌套
    public class NestedSwitch {
        public static void main(String[] args) {
            int outerSwitch = 1;
            int innerSwitch = 2;
            
            switch (outerSwitch) {
                case 1:
                    switch (innerSwitch) {
                        case 1:
                            System.out.println("内部 switch - 1");
                            break;
                        case 2:
                            System.out.println("内部 switch - 2");
                            break;
                        default:
                            System.out.println("内部 switch - 默认");
                    }
                    break;
                case 2:
                    System.out.println("外部 switch - 2");
                    break;
                default:
                    System.out.println("外部 switch - 默认");
            }
        }
    }

四、循环结构

1.for循环
  • 语法格式:
for(表达式1;表达式2;表达式3){
//表达式1是用于初始化循环变量的初始值设置
//表达式2是循环条件,满足条件则继续循环,否则结束循环
//表达式3是更新循环变量
//代码语句
}
  • 代码示例:
//用for循环打印1-10
int n = 10;
for(int i = 1;i <= n;i ++){
    System.out.println(i);
}
  • for之后不写{ }则这只能管到for紧跟的那句代码的执行
  • for();和for()语句括号内定义的变量i

        若将代码改成

                int n = 10;
                for(int i = 1;i <= n;i ++);{
                           System.out.println(i);
                }

        for(int i = 1; i <= n; i ++); 这个 for 循环实际上没有循环体(因为它后面直接跟了一个分号),所以它会迭代 i 从 1 到 10,但循环体内不执行任何操作。

并且会报错,for(int i = 1; i <= n; i ++); for语句后有分号,意味着for循环到此结束,i是for循环内的变量,只在for内有效,出了for循环之后i无效了,故在{ System.out.println(i); } 这个代码块是一个独立的语句块,它会在 for 循环执行完毕后被执行,而i不属于for语句之外的语句,故System.out.println(i)这句代码会在i那里报错。

  • for循环内定义的变量
for (int i = 1; i <= 5; i++) {
    int square = i * i; // 在循环内部定义变量 square,并赋值为 i 的平方
    System.out.println("Square of " + i + " is: " + square);
}
此处代码的i和square都属于是for循环体内定义的变量,它们属于for循环体内,出了for循环这两个变量就没有用了,再额外使用没有在外部定义的i和square的话就会报错。并且在不同的for循环体内变量可以是一样的,即两个不同的for循环可以均使用i和square作为它们内部的变量,不会报错,如:
for (int i = 1; i <= 5; i++) {
    int square = i * i; // 在循环内部定义变量 square,并赋值为 i 的平方
    System.out.println("Square of " + i + " is: " + square);
}

for (int i = 1; i <= 9; i++) {
    int square = i * i; // 在循环内部定义变量 square,并赋值为 i 的平方
    System.out.println("Square of " + i + " is: " + square);
}
2.while循环
  • 语法格式:
whiel(循环条件){
//循环语句;
}
  • 循环条件一定要为布尔表达式,循环条件的值为true则执行循环,false则不执行循环
    int num = 9;
    while(num>0){
        System.out.println(num);
        num--;
    }

  • 与if类似,while下面的语句可以不写{ },但是不写的话,while只能管while后紧跟while的那句代码的执行

  • 与if类似,while后面不要多写分号否则可能导致循环不能正确执行,
    int num = 1;
    while(num <= 10);{
        System.out.println(num);
        num++;
    }

while(num <= 10);因为有分号,所以它是一句单独的语句,又因为num = 1 ,满足小于等于10的条件,所以while语句恒成立,所以会一直循环下去,即死循环,System.out.println(num)和num++这两句语句永远没有执行的机会

3.do……while循环
  • 语法格式:(先执行循环语句,在判定循环条件,循环条件成立则继续执行循环,否则循环结束)
do{
//循环语句    
}while(循环条件);//这里while一定要加分号!!!
  • 代码示例:
int count = 1;  
do {
    System.out.println("Count is: " + count);
    count++;
} while (count <= 5);
  • do……while和while的区别:

        do-while 循环

  • 执行顺序:先执行循环体内的代码,然后再检查循环条件是否为真。
  • 特点:无论循环条件是否为真,do-while 至少会执行一次循环体内的代码。

        while 循环

  • 执行顺序:先检查循环条件是否为真,如果为真则执行循环体内的代码,然后再重复这个过程;如果条件为假,则直接跳过循环体。
  • 特点:如果初始时循环条件就为假,则 while 循环内的代码一次也不会执行。
4.扩展:continue和break的区别
  • break:某次循环执行完之后不用再继续执行剩下的循环时,使用break结束循环
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break; // 当 i 等于 5 时跳出循环
        }
        System.out.println(i);
    }
    /*输出:
    1
    2
    3
    4
    5
    */

  • continue:在某次循环下,当次循环不用再继续执行了,要跳过该次执行,进入下一次循环执行,则使用continue跳过当次执行
    for (int i = 1; i <= 5; i++) {
        if (i % 2 == 0) {
            continue; // 如果 i 是偶数,则跳过本次循环
        }
        System.out.println(i);
    }
    /*输出:
    1
    3
    5
    */

标签:语句,逻辑,Java,int,System,循环,println,out
From: https://blog.csdn.net/2302_80281315/article/details/140772960

相关文章

  • 基于Java+Vue的采购管理系统:降低采购成本,需求部门更低成本采购(整套源码)
    前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确保供应商符......
  • 三种语言实现前缀和(C++/Python/Java)
    题目输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l,r对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。......
  • java String 方法总结
    在Java中,String类是一个非常重要的类,用于创建和操作字符串。String类被设计为不可变的(immutable),即一旦一个字符串被创建,包含在这个对象中的字符序列就不能被改变。下面是一些常用的String方法总结:1.获取字符串信息length():返回字符串的长度。charAt(intindex):返回......
  • Java中的封装
    在Java中,封装(Encapsulation)是面向对象编程(OOP)的四大特性之一(其他三个是继承、多态和抽象)。封装主要用来隐藏对象的属性和实现细节,仅对外公开接口(方法),与对象交互只能通过这些接口进行。这样做的好处包括提高代码的安全性、灵活性和可维护性。如何进行简单封装1.使用访问修饰......
  • JavaScript
    JS简介JS特点Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,遗留的速度问题,为客户提供更流畅的浏览效果。JS是一种运行于浏览器端上的小脚本语句,可以实现网页如文本......
  • 装饰大师——装饰模式(Java实现)
    引言大家好,上期我们介绍了装饰模式在Python中的实现,今天,我们将继续探讨装饰模式,并展示如何在Java中实现它。装饰模式概述装饰模式的核心思想是将功能附加到对象上,而不是通过继承来实现,这种模式包含以下几个关键组成部分:组件接口:定义基本功能;具体组件:实现基本功能的类;装......
  • Java编译和运行的命令
    在Java中,编译和运行Java程序主要使用两个命令:javac用于编译Java源代码,java用于运行编译后的Java字节码。编译Java程序要使用javac命令编译Java程序,你需要在命令行(终端或命令提示符)中导航到包含你的Java源代码文件的目录。然后,运行以下命令:bash复制代码javacYourProgram.ja......
  • Java跨平台原理
    Java源代码编译成字节码编译过程:Java源代码(.java文件)首先被Java编译器(javac)编译成一种中间代码,即字节码(.class文件)。这种字节码是一种与具体平台无关的代码,它可以在任何安装了Java虚拟机(JVM)的平台上被解释执行。字节码特性:字节码是Java实现跨平台的关键。它是一种介于源代码和......
  • Java多态----继承
    一、基本概念关键字:extends    在java中,一个类(类A)继承另一个类(类B)是指类A能够直接使用类B的所有非构造方法和所有非私有属性(注意:不是不能使用是不能直接使用),并在类B原有的基础上继续进行扩充和延伸,即关键字extends的含义。通常,我们称类A与类B的关系为继承关系,继承方(......
  • Java多态----重写
    一、重写与重载    在学习重写之前,我们需要将它和重载进行区分:方法的重载,发生在同一个类中,方法名相同,参数列表不同,返回值无关。可参考上一篇文章中一个类中不同的构造方法,其也属于重载。详情可见于Java多态----继承-CSDN博客-------------------------------------......