『JavaSE』分支、循环和输入输出

顺序结构

Java语言的顺序结构和C语言一样,都是从上都下,一行一行顺序执行,我们来看一个例子来看一下

public class Test {
    public static void main(String[] args) {
        System.out.println("hello, first statement!");
        System.out.println("hello, second statement!");
        System.out.println("hello, third statement!");
    }
}

运行结果如下
在这里插入图片描述


分支结构

if语句

if语句的用法如下

if (布尔表达式) {
	// 布尔表达式为真时执行代码
}

例子如下

public class Test {
    public static void main(String[] args) {
        if (true) {
            System.out.println("hello, world!");
        }
    }
}

在这里插入图片描述


if (布尔表达式) {
	// 布尔表达式为真时执行代码
} else {
	// 布尔表达式为假时执行代码
}

例子如下

public class Test {
    public static void main(String[] args) {
        if (false) {
            System.out.println("hello, true!");
        } else {
            System.out.println("hello, false!");
        }
    }
}

在这里插入图片描述


if (布尔表达式1) {
	// 布尔表达式1为真时执行
} else if (布尔表达式2) {
	// 布尔表达式2为真时执行
} else {
	// 布尔表达式1和布尔表达式2都为假的时候执行
}

来个例子:判断一个数是正数还是负数

public class Test {
    public static void main(String[] args) {
        int num = 10;
        if (num > 0) {
            System.out.println("正数");
        } else if (num < 0) {
            System.out.println("负数");
        } else {
            System.out.println("零");
        }
    }
}

在这里插入图片描述


最后,统一来看几个问题,加深理解
问题一:判断一个数是正数还是负数

public class Test {
    public static void main(String[] args) {
        int num = 10;

        if (num % 2 == 0) {
            System.out.println(num + "是偶数");
        } else {
            System.out.println(num + "是奇数");
        }
    }
}

在这里插入图片描述


问题二:判断某一年是否是闰年

public class Test {
    public static void main(String[] args) {
        int year = 2000;

        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            System.out.println(year + "是闰年");
        } else {
            System.out.println(year + "不是闰年");
        }
    }
}

在这里插入图片描述


注意:和C语言不同的是,Java的if的括号中必须是布尔表达式,否则就会报错;而在C语言中无所谓,因为C语言中0为假,非0为真,来看一个例子:

public class Test {
    public static void main(String[] args) {
        int num = 10;

        if (num) {
            System.out.println(num + "非零");
        } else {
            System.out.println(num + "为零");
        }
    }
}

在这里插入图片描述


switch语句

我们知道,C语言中的switch语句中只能使用整型数据,而在Java中不仅可以使用整型数据,还可以使用字符和字符串
基本语法如下

switch (整数 | 枚举 | 字符 | 字符串) {
	case 内容1: {
		内容满足时执行语句;
		break;
	}
	case 内容2: {
		内容满足时执行语句;
		break;
	}
	...
	default: {
		内容不满足时执行语句;
		break;
	}
}

我们来一个例子理解一下,还是经典的星期问题根据数字,输出是星期几

public class Test {
    public static void main(String[] args) {
        int day = 5;

        switch (day) {
            case 1: {
                System.out.println("星期一");
                break;
            }
            case 2: {
                System.out.println("星期二");
                break;
            }
            case 3: {
                System.out.println("星期三");
                break;
            }
            case 4: {
                System.out.println("星期四");
                break;
            }
            case 5: {
                System.out.println("星期五");
                break;
            }
            case 6: {
                System.out.println("星期六");
                break;
            }
            case 7: {
                System.out.println("星期天");
                break;
            }
            default: {
                System.out.println("输入有误");
                break;
            }
        }
    }
}

在这里插入图片描述


注意,不要遗漏break,否则会顺序执行下去,直到遇到break,下面来个例子看下效果:

public class Test {
    public static void main(String[] args) {
        int day = 5;

        switch (day) {
            case 1: {
                System.out.println("星期一");
            }
            case 2: {
                System.out.println("星期二");
            }
            case 3: {
                System.out.println("星期三");
            }
            case 4: {
                System.out.println("星期四");
            }
            case 5: {
                System.out.println("星期五");
            }
            case 6: {
                System.out.println("星期六");
            }
            case 7: {
                System.out.println("星期天");
            }
            default: {
                System.out.println("输入有误");
            }
        }
    }
}

在这里插入图片描述


不推荐使用switch

  • break容易遗漏
  • switch中不能就收浮点数等,接收的数据类型优先
  • 不能表达更复杂的条件
  • switch的嵌套结构很丑
  • switch能够完成的工作,if else都能完成,并且也没有更复杂

循环结构

while循环

基本语法如下

while (循环条件) {
	// 循环条件为true时,执行循环语句;否则结束循环
	循环语句;
}

直接来看几个问题
问题一:计算5的阶乘

public class Test {
    public static void main(String[] args) {
        int num = 1;
        int factor = 1;

        while (num <= 5) {
            factor *= num;
            ++num;
        }

        System.out.println("factor = " + factor);
    }
}

在这里插入图片描述


for循环

基本语法如下

// 表达式1:用于初始化循环变量;
// 表达式2:循环条件;
// 表达式3:更新循环变量。
for (表达式1; 表达式2; 表达式3) {
	循环体;
}

同样的,我们使用for循环来计算一下5的阶乘

public class Test {
    public static void main(String[] args) {
        int factor = 1;

        for (int i = 1; i <= 5; ++i) {
            factor *= i;
        }

        System.out.println("factor = " + factor);
    }
}

在这里插入图片描述

do while循环

和C语言中的do while循环一样,先执行循环语句,再判定循环条件
基本语法格式如下

do {
	循环语句;
} while (循环条件);

同样的,使用do while计算5的阶乘

public class Test {
    public static void main(String[] args) {
        int factor = 1;
        int num = 1;

        do {
            factor *= num;
            ++num;
        } while (num <= 5);

        System.out.println(factor);
    }
}

在这里插入图片描述


break和continue

  • break跳出当前循环
  • continue跳出本次循环,直接进入下一次循环

我们来看一个例子来体会一下break的作用,找到1~100中第一个3的倍数

public class Test {
    public static void main(String[] args) {
        for (int num = 1; num <= 100; ++num) {
            if (num % 3 == 0) {
                System.out.println(num);
                break;
            }
        }
    }
}

在这里插入图片描述


再来一个例子来替换一下continue的作用,打印1~100中所有3的倍数

public class Test {
    public static void main(String[] args) {
        for (int num = 1; num <= 100; ++num) {
            if (num % 3 != 0) {
                continue;
            }

            System.out.print(num + " ");
        }
    }
}

在这里插入图片描述


输入输出

输出

System.out.println自带换行的输出

public class Test {
    public static void main(String[] args) {
        System.out.println("hello, world!");
    }
}

在这里插入图片描述


System.out.print不带换行的输出。

public class Test {
    public static void main(String[] args) {
        System.out.print("hello, world!");
    }
}

在这里插入图片描述


格式化输出,和C语言中用法类似。

public class Test {
    public static void main(String[] args) {
        System.out.printf("%s", "hello, world!");
    }
}

在这里插入图片描述


输入

我们可以使用System.in.read读取一个字符,来看代码。

public class Test {
    public static void main(String[] args) {
        System.out.println("请输入一个字符: ");
        char c = (char)System.in.read();
        System.out.println("输入的字符是: " + c);
    }
}

在这里插入图片描述
从上述报错信息可以看出,使用System.in.read()必须使用异常对其进行捕获,我们将代码修改一下

import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        try {
            System.out.println("请输入一个字符: ");
            char c = (char)System.in.read();
            System.out.println("输入的字符是: " + c);
        } catch (IOException e) {
            System.out.println("IOException");
        }
    }
}

在这里插入图片描述
可以看到,上述的输入使用是非常麻烦的,下面我们介绍一种更简单好用的方式。


使用Scanner输入
我们直接来看一段代码

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串: ");
        String str = sc.nextLine();
        System.out.println("请输入一个整数: ");
        int numInt = sc.nextInt();
        System.out.println("请输入一个浮点数: ");
        double numDouble = sc.nextDouble();

        System.out.println("您的所有输入如下: ");
        System.out.println("str: " + str + " numInt: " +
                numInt + " numDouble: " + numDouble);

		sc.close();
    }
}

在这里插入图片描述
注意Scanner对象使用完毕,一定要调用close()方法否则会造成资源泄漏


如果调用的是nextDouble()方法,但是输入的不是Double类型数据,会抛出异常,只要类型不匹配都是如此,下面来看一段代码:

import java.util.Scanner;

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

        System.out.println("请输入一个浮点数: ");
        double num = sc.nextDouble();
        System.out.println("输入的浮点数是: " + num);

        sc.close();
    }
}

在这里插入图片描述


最后再来一个例子,循环输入N(N未知)个数,统计它们的和

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double sum = 0.0;
        // 当sc.hasNextDouble()遇到EOF(文件结束标志)就会终止
        // Windows下输入EOF为Ctrl + z,Mac/Linux下为Ctrl + d
        while (sc.hasNextDouble()) {
            double temp = sc.nextDouble();
            sum += temp;
        }

        System.out.println("The sum is: " + sum);
    }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值