目录

  • 4 逻辑控制
  • 4.1 顺序结构
  • 4.1.1 if...else分支
  • 4.1.2 switch语句
  • 4.2 循环结构
  • 4.2.1 while循环
  • 4.2.2 break 和 continue
  • 4.2.3 for循环
  • 5 输入输出
  • 5.1 输出到控制台
  • 5.2 系统输入


4 逻辑控制

Java中程序的逻辑控制语句

Java中的输入输出方式

4.1 顺序结构

顺序结构是什么?

是指单线程下按照代码的书写顺序一行一行向下执行

4.1.1 if…else分支

java判断生日输入是否正确_java判断生日输入是否正确

具体使用看下面(还要注意代码格式哦):

  1. 只有if语句
if(布尔表达式){
    //满足条件的代码块
}
  1. if…else分支
if(布尔表达式){
    //满足条件的代码块
}else{
    //条件不满足时执行的代码
}
  1. if …else if …else 多分支语句
if(布尔表达式){
    //
}else if(布尔表达式){
    //
}else if(布尔表达式){
    //
}else{
    //不满足上述所有条件时的情况
}

if语句 和 else if 语句是互斥的,不满足if的条件,跳到下一个else if 继续判断是否符合条件,都不符合,则走else语句。

分支语句的嵌套问题:在任意一个分支中,还可以嵌套分支

在编写代码时,需要注意:在使用多个if…else 语句时,且没有使用{},else默认匹配最接近的if语句

int a = 10;
int b = 5;
if(a == 10)
    if(b != 5)
        System.out.println(b);
else                
    System.out.println(a);

以上代码使用 if…else 时,没有使用{},此时else匹配的是 if(b != 5)

注意:在高级编程语言中,一个 ; 表示一行语句的结束

4.1.2 switch语句

switch语句:

switch(int|char|String|enum){ //只有这四种类型可以使用
        case 内容1:
            //满足内容1的语句
            break;
        case 内容2:
            //满足内容2的语句
            break;
        case 内容3:
            //满足内容3的语句
            break;
    	default:
        	//上述所有分支都不满足的情况
        	break;
}

为什么每个case语句后都要加break?

case分支不加break时,代码会从第一个满足case分支开始,继续向下逐个执行,直到遇到break 或者把剩下的分支执行完毕。

4.2 循环结构

某一段代码会被重复执行很多次

4.2.1 while循环

while(循环的终止条件){ //条件为true时,代码就一直执行,条件为false时循环终止
    //循环体代码
}

使用while循环计算10!

public class Test {
    public static void main(String[] args) {
        int ret = 1; //用于while判断
        int sum = 1; 
        while(ret <= 10){
            sum *= ret;
            ret++;
        }
        System.out.println(sum);  
    }
}

输出结果为:

3628800

4.2.2 break 和 continue

break: 表示终止当前的循环

continue: 表示跳过本次循环,继续下次循环

当我们需要一次跳出多个循环时,可以使用 return;直接结束当前方法的调用

或者break label 的使用

/**
break label 的使用
*/
public class Test {
    public static void main(String[] args) {
        int ret = 1;
        int sum = 1;
        label:while(ret <= 10){   //label 可以改变
            while (ret < 2){
                System.out.println("进入第二个循环");
                break label;
            }
            ret++;
        }
        if(ret == 1){   //判断是否第一次进入内层循环就直接跳出所有循环
            System.out.println("已经直接跳出循环");
        }
    }
}

输出结果:

进入第二个循环
已经直接跳出循环

4.2.3 for循环

for循环代码格式:

for(初始化条件;循环终止条件;更新循环变量){
    //循环体代码
}

for循环的三个条件都是可选的,可以都不写.

int i = 1; //初始化条件
for(;;){
    if(i > 10){   //循环终止条件
        break;
    }
    //循环体代码
    i++;  //更新循环变量
}

5 输入输出

5.1 输出到控制台

基本语法

System.out.println();  //输出的数据自带换行
System.out.print();    //输出的数据不带换行
System.out.printf();   //格式化输出,和C语言的printf相似
System.out.println();  
System.out.print();

这两个print的()内部,可以放置任何参数,包括引用类型,功能可以说是非常强大

printf("%d", int变量);

这是格式化输出,变量类型有相对应的转换符 (%d 是整型的转换符)

5.2 系统输入

系统输入: Scanner类

要使用Scanner类,必须要产生Scanner 的对象

Scanner in = new Scanner(System.in);  //格式

我们在代码中来看它是如何具体使用的

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的性别:");
        String str = scanner.nextLine(); //nextLine会自动读入一行数据,要特别注意
        System.out.println("请输入您的年龄:");
        int age = scanner.nextInt();
        System.out.println("年龄:" + age + "  性别:" + str);
    }
}

运行结果:

请输入您的性别:
男
请输入您的年龄:
22
年龄:22  性别:男

看这个例子:
那么我们要从键盘循环读入数字应该怎么实现呢?

在这里要用到scanner.hasNextInt

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()){
            int a = scanner.nextInt();
            System.out.println(a);
        }
    }
}

代码功能:每输入一个整数,就输出一个整数;输入的不是整数时,代码结束。


各位大佬发现有错误时,留下评论,我会及时改正。大家一起进步😀😀😀