目录
一、if语句
二、switch语句
三、while循环
四、for循环
五、do...while 循环
六、循环中的特殊语句
1、break语句
2、continue语句
七、Java中的输入输出
1、输出
2、输入
使用 Scanner 读取字符串/整数/浮点数
使用 Scanner 循环读取 N 个数字
猜数字小游戏
逻辑控制是所有程序世界里必不可缺的部分,生活中其实也是如此(选择小学,选择高中,选择大学,选对象,选择考公 考研 出国或者直接工作....)人生处处充满抉择,结果有时不如意,大家也别灰心放弃,因为机会说不准就在下一个选择的拐角处等着你呢~
Java的世界其实也是少不了逻辑控制选择的,接下来带大家康康Java中的部分基础逻辑控制语句。
一、if语句
1、if 语句语法形式:
if(布尔表达式){
//条件满足时执行代码
}
2、if...else 语句语法形式:
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
3、if...else if...else 语句语法形式:
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
讲了这么多语法,来个实例。
判断一年是否为闰年,如下:
int year = 2000;
if (year % 100 == 0) {
// 判定是否为世纪闰年
if (year % 400 == 0) {
System.out.println("是闰年");
} else {
System.out.println("不是闰年");
}
} else {
// 判定是否为普通闰年
if (year % 4 == 0) {
System.out.println("是闰年");
比特科技
} else {
System.out.println("不是闰年");
}
}
注意:
1、if...else 语句可以不加大括号。 但是也可以写语句 ( 只能跟一条语句,如果你写了多个,系统就会只默认跟在它后面的一条语句为 if / else 中的语句 )。 2、若有多个if 条件句,只有一个else 的情况下,此时 else 是和 最接近的 if 匹配。int x = 10;
int y = 10;
if (x == 10)
if (y == 10)
System.out.println("aaa");
else
System.out.println("bbb");
//因为else与最近的if匹配,因此输出结果为aaa
二、switch语句
基本语法:
switch( ){
case 内容1 : {
内容满足时执行语句;
break;
}
case 内容2 : {
内容满足时执行语句;
break;
}
...
default:{
内容都不满足时执行语句;
break;
}
}
例:根据
day
的值输出星期。
int day = 1;
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; }
根据
switch
中值的不同
,
会执行对应的
case
语句
。遇到
break
就会结束该
case
语句。
如果
switch
中的值没有匹配的
case,
就会执行
default
中的语句。
注意:
1、break 注意不要遗漏,如果漏写了,满足条件之后,并不会立刻跳出循环而是一直往下执行,会输出之后的值,直至碰到break语句,这样就无法得到我们想要的结果。
2、switch 中的值只能是 int / byte / short / enum / char / String。
long float double boolean 都不可以作为switch的参数。
三、while循环
基本语法格式:
while(循环条件){
循环语句;
}
若循环条件为
true,
则执行循环语句;
否则结束循环。
注意:
1、一定要有可以打破循环的条件,否则会成为死循环。
2、
和
if
类似,
while
后的语句可以不写
{ } ,
但是不写的时候只能支持一条语句。
说这么多语法,来点 while 循环的实例。
1、
计算
5
的阶乘。
int n = 1;
int result = 1;
while (n <= 5) {
result *= n; //这步相当于result=n*result
n++;
}
System.out.println(num); // 执行结果为120
2、计算 1! + 2! + 3! + 4! + 5!
int num = 1;
int sum = 0;
while (num <= 5) { // 外层循环负责求阶乘的和
int factorResult = 1;
int tmp = 1;
while (tmp <= num) { // 里层循环负责完成求每个阶乘的值
factorResult *= tmp;
tmp++;
}
sum += factorResult;
num++;
}
System.out.println("sum = " + sum);
四、for循环
基本语法:
for(表达式1;表达式2;表达式3){
循环体;
}
表达式
1:
用于初始化循环变量。
表达式2: 循环条件。
表达式3: 更新循环变量。
例一:计算 5 的阶乘。
int result = 0;
for (int i = 1; i <= 5; i++) {
result *= i;
}
System.out.println("result = " + result);
例二:计算 1! + 2! + 3! + 4! + 5!
int sum = 0;
for (int i = 1; i <= 5; i++) { //外循环为要求的五个数
int tmp = 1;
for (int j = 1; j <= i; j++) { //内循环求每个数的阶乘
tmp *= j;
}
sum += tmp;
}
System.out.println("sum = " + sum);
(这题的易错点:tmp定义时,记得放在内循环外,外循环里,如果放在外循环外部的话,tmp相当于只会初始化一次,后续求阶乘会出问题从而得不到我们想要的结果)
五、do...while 循环
基本语法格式:
do{
循环语句;
}while(循环条件);
先执行循环语句
,
再判定循环条件。( 有先上车,后补票 // 先斩后奏 那味了)
例:打印1~10。
int num = 1;
do {
System.out.println(num);
num++;
} while (num <= 10);
注意:do...while 循环最后的分号不要忘记。一般do while用的比较少,while和for循环用的是最多的。
六、循环中的特殊语句
1、break语句
break
的功能是让循环提前结束。
例:找到 100 ~ 200 中第一个为 3 的倍数的数字并打印。
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
// 执行结果 找到了 3 的倍数, 为:102
由此可见break可以跳出循环。若有嵌套的循环,break跳出的是离自己最近的循环。
2、continue语句
continue
的功能是跳过这次循环
,
立即进入下次循环。
例:找到
100 - 200
中所有
3
的倍数
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++;
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
num++;
}
由上述可以看出,continue语句是立马跳过本次循环(无视continue后面的语句的),直接到判断条件,如果符合接着执行下一次循环,但不是直接跳出整个循环。
七、Java中的输入输出
1、输出
1、输出
这个在第一节初识Java中也有提到过,Java中的输出大体分三种。
1、System.out.println("hello world"); // 输出一个字符串, 带换行。2、System.out.print("hello world"); // 输出一个字符串, 不带换行
3、 int a=77;
System.out.printf("a=%dn",a); //和c语言中的一样,格式化输出。
以下为部分格式化转换符:2、输入
使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner; // Scanner 使用时需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine(); //读取一个字符串
System.out.println("请输入你的年龄:");
int age = sc.nextInt(); //读取一个整数
System.out.println("请输入你的工资:");
float salary = sc.nextFloat(); //读取一个浮点数
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"n"+"年龄:"+age+"n"+"工资:"+salary);
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名: 张三
年龄:18
工资:1000.0
import java.util.Scanner; // Scanner 使用时需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine(); //读取一个字符串
System.out.println("请输入你的年龄:");
int age = sc.nextInt(); //读取一个整数
System.out.println("请输入你的工资:");
float salary = sc.nextFloat(); //读取一个浮点数
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"n"+"年龄:"+age+"n"+"工资:"+salary);
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名: 张三
年龄:18
工资:1000.0
当然除了上述也支持 nextBoolean()、nextByte()、nextShort()等输入的数据类型。
使用 Scanner 循环读取 N 个数字 Scanner sc = new Scanner(System.in); while (sc.hasNextDouble() ){ ..... } 可用的语句如下,这些方法的返回值都是boolean类型,表示如果输入的一直是这个类型的值,将会持续进行读取数字——执行程序的过程。 (一般来说刷题可能会用到,因为一般都是有好几个组用例要pass的,所以要循环输入才行)
那要怎么才能结束呢?
使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d)即可结束。
猜数字小游戏
最后写个猜数字的小游戏来结束本篇啦~
拓展一个random的用法(用之前也要导入 util 包)——
random random = new Random(); // 默认随机种子是系统时间 int guess= random.nextInt(100); //代表guess变量的随机值的范围为[0~100) 左闭右开 当然也有其他类型——
import java.util.Random;
import java.util.Scanner;
class Test {
public static void main(String[] args) {
Random random = new Random();
Scanner sc = new Scanner(System.in);
int guess = random.nextInt(100);
while (true) {
System.out.println("请输入要输入的数字: (1-100)");
int num = sc.nextInt();
if (num < guess) {
System.out.println("低了");
} else if (num > guess) {
System.out.println("高了");
} else {
System.out.println("猜对了");
break;
}
}
}
}
最后运行结果为:
是不是很有趣呢,会了循环和逻辑后还可以写出更多有意思的小游戏。
下一篇就是关于方法(函数)的使用了 真心觉得自己写的好慢哈哈哈
to be continue →
欢迎大家互相探讨交流补充 欢迎捉虫!



