1.分支结构
if语句
if语句用于基于条件执行不同的代码块。它根据布尔表达式的值决定执行哪部分代码。if语句可以单独使用,也可以与else或else if组合使用。
基本语法:
if (条件表达式) {
// 条件为true时执行的代码
}
带有else的语法:
if (条件表达式) {
// 条件为true时执行的代码
} else {
// 条件为false时执行的代码
}
多条件判断:
if (条件1) {
// 条件1为true时执行
} else if (条件2) {
// 条件2为true时执行
} else {
// 所有条件都为false时执行
}
switch语句
switch语句用于基于不同情况执行不同代码块。switch语句使用表达式值与case标签匹配来决定执行路径。
基本语法:
switch(表达式) {
case 值1:
// 代码块1
break;
case 值2:
// 代码块2
break;
default:
// 默认代码块
}
if语句更适合:
- 布尔条件判断
- 范围检查
- 复杂条件组合
switch语句更适合:
- 固定值匹配
- 代码可读性要求高的场景
switch分支结构的几点注意事项
表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。 case给出的值不允许重复,且只能是字面量,不能是变量。 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
2.循环结构
for循环
for循环是一种常用的循环结构,适合在已知循环次数的情况下使用。语法如下:
for (初始化; 条件; 迭代) {
// 循环体
}
- 初始化:在循环开始时执行一次,通常用于声明和初始化循环变量。
- 条件:每次循环前检查,条件为true时继续循环,false时退出。
- 迭代:每次循环结束后执行,通常用于更新循环变量。
示例:
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
输出:0到4的数字。
for循环案例:查找水仙花数
while循环
while循环在条件为true时重复执行代码块,适合循环次数不确定的情况。语法如下:
while (条件) {
// 循环体
}
- 条件:每次循环前检查,为true时执行循环体,false时退出。
示例:
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
输出:0到4的数字。
while循环案例:1.世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?
2.假设你在银行投资了100000元,银行给出的复利是1.7%,问多少年后能实现本金翻倍?
do while循环
do while循环与while类似,区别在于它至少执行一次循环体,再检查条件。语法如下:
do {
// 循环体
} while (条件);
- 条件:循环体执行后检查,为true时继续循环,false时退出。
示例:
int i = 0;
do {
System.out.println(i);
i++;
} while (i < 5);
输出:0到4的数字。
死循环
死循环是指循环条件始终为true,导致循环无法终止。通常需要强制退出(如使用break或程序终止)。
示例:
while (true) {
System.out.println("无限循环");
}
或
for (;;) {
System.out.println("无限循环");
}
死循环可用于需要持续运行的程序(如服务器监听)。
嵌套循环
嵌套循环是指在一个循环内包含另一个循环。常用于处理多维数据(如二维数组)。
示例:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
System.out.println(i + ", " + j);
}
}
输出:
0, 0
0, 1
1, 0
1, 1
2, 0
2, 1
嵌套循环可以多层嵌套,但需注意性能问题。
3.break、continue
break : 跳出并结束当前所在循环的执行。
continue: 用于跳出当前循环的当次执行,直接进入循环的下一次执行。
注意:
break : 只能用于结束所在循环, 或者结束所在switch分支的执行。
continue : 只能在循环中进行使用。
4.综合小案例
简单计算器
public class test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int a = sc.nextInt();
System.out.println("请输入第二个数:");
int b = sc.nextInt();
System.out.println("请输入运算符:");
String opr = sc.next();
double result = calc(a, b, opr);
System.out.println(result);
}
public static double calc(int a, int b, String opr) {
double result = 0;
switch (opr) {
case "+":
result = a + b;
break;
case "-":
result = a - b;
break;
case "*":
result = a * b;
break;
case "/":
result = a / b;
break;
}
return result;
}
}
猜数字游戏
public class Test3 {
public static void main(String[] args) {
// Random random = new Random();
int number = (int)(Math.random()*100+1);
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请输入你要猜的数字:");
int num = sc.nextInt();
if(num > number){
System.out.println("你猜的数字太大了");
}else if(num < number){
System.out.println("你猜的数字太小了");
}else{
System.out.println("恭喜你猜对了");
break;
}
}
}
}
验证码
public class yzm {
public static void main(String[] args) {
String code4 = getYZM(4);
String code6 = getYZM(6);
System.out.println("4位验证码为:" + code4);
System.out.println("6位验证码为:" + code6);
}
public static String getYZM(int count) {
String code = "";
Random r = new Random();
for (int i = 0; i < count; i++) {
int type = r.nextInt(3);
type = 0;
switch (type) {
case 0:
code += r.nextInt(10) + 1;
break;
case 1:
code += (char) (r.nextInt(26) + 65);
break;
case 2:
code += (char) (r.nextInt(26) + 97);
break;
}
}
return code;
}
}
找素数
public class zss {
public static void main(String[] args) {
// 遍历 101 到 200 之间的所有数字
for (int i = 101; i <= 200; i++) {
// 如果当前数字是素数,则打印该数字
if (isPrime(i)) {
System.out.print(i + " ");
}
}
}
public static boolean isPrime(int number) {
// 从 2 开始遍历到 number/2,检查是否有能整除的数
for (int i = 2; i < number / 2; i++) {
// 如果存在因数,则不是素数
if (number % i == 0) {
return false;
}
}
// 没有找到因数,说明是素数
return true;
}
}