零基础搞定JavaSE语法(2)----程序逻辑控制
这部分内容比较简单,很多与C语言类似,但也有些不同之处,所以还是挨个说说,加深记忆。
顺序结构
顾名思义 按照代码书写的顺序一行一行执行
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
// 运行结果
//aaa
//bbb
//ccc
分支结构
if语句
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
注意:
1.if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配,这点与C语言类似
2.if后的表达式只能是布尔表达式
3. Java 中更推荐 { 放在 if / else 的同一行
Switch语句
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
注意:
1.break 不要遗漏, 否则会失去 “多分支选择” 的效果;建议一个 switch 语句最好都要带上 default
2.long类型、float类型、double类型、boolean类型 是不能做Switch参数的,而且Switch的参数不能是一个复杂的表达式,像 a>9
3.Switch支持嵌套,但是写出来的代码很丑,不建议,毕竟咱还是个看脸的世界
循环结构
while循环
while(循环条件){
循环语句;
}
语法知识基本和C语言一样,重要的是练习,在实践中加强
这里是一些练习题目,感兴趣的大家可以上上手实践一下,也可以交流一下
- 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
- 判定一个数字是否是素数
- 打印 1 - 100 之间所有的素数
- 输出 1000 - 2000 之间所有的闰年
- 输出乘法口诀表(要用到字符串的拼接,上篇文章中有讲到哦,小伙伴们可以去看看)
- 求两个正整数的最大公约数(辗转相除法)
- 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
- 编写程序数一下 1到 100 的所有整数中出现多少个数字9。
- 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,若是则153是一个“水仙花数”。)
- 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序
- 写一个函数返回参数二进制中 1 的个数 比如:15 0000 1111 4个1
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
- 输出一个整数的每一位.
- 猜数字游戏(不要走开哦,文章最后会讲到,主要是想说明如何生成随机数)
注意:
16. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
17. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
18. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.
for循环
for(表达式1;表达式2;表达式3){
循环体;
}
//表达式1: 用于初始化循环变量.
//表达式2: 循环条件
//表达式3: 更新循环变量.
注意事项与while一致
break
break 的功能是让循环提前结束.
// 找到 100 - 200 中第一个 3 的倍数
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
// 执行结果:102
//执行到 break 就会让循环结束
continue
continue 的功能是跳过这次循环, 立即进入下次循环
//找到 100 - 200 中所有3的倍数
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++; // 这里的 ++ 不要忘记! 否则会死循环.
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
num++;
}
//执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句.
输出到控制台
基本语法
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf("x = %d\n", x); // 格式化输出
格式化输出的转换符不必要专门去记忆,用到的时候根据需求查一下就行
从键盘输入
Scanner读取一个数
需要导包import java.util.Scanner,但IDEA会自动导入
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt(); //从键盘读取一个整数
float b = scanner.nextFloat(); //从键盘读取一个小数
Scanner读取字符串
Scanner scanner = new Scanner(System.in);
String str1 = scanner.next(); //键入xiaoxiao is a bird
System.out.println(str1); //输出xiaoxiao
String str1 = scanner.nextLine(); //键入xiaoxiao is a bird
System.out.println(str1); //输出xiaoxiao is a bird
注意:
String str1 = scanner.next(); 遇到空格读取结束
String str1 = scanner.nextLine(); 读取整行,但建议把它放在代码的最前面
使用 Scanner 循环读取 N 个数字
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt()){
int a= scanner.nextInt();
System.out.println(a);
}
//当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d).在IDEA上是 ctrl + d
猜数字游戏
游戏规则:
系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “小了”, 如果输入的数字比该随机数大, 提示 “大了” , 如果输入的数字和随机数相等, 则提示 “猜对了”
提前须知:.电脑如何生成随机数字
Random random = new Random(); //括号里可以写一个数,代表随机种子
int rand = random.nextInt(100)+1; //题目要求生成1-100,所以要加1
参考代码
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 toGuess = random.nextInt(100)+1;
while (true) {
System.out.println("请输入猜的数字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("小了");
} else if (num > toGuess) {
System.out.println("大了");
} else {
System.out.println("猜对了");
break; //猜对了跳出循环
}
}
sc.close();
}
}
这节内容比较少,主要去实践,一起多加练习吧!