1207 字
6 分钟
Java中的循环与分支
Java中的循环与分支
循环结构
for 循环:
- 用于在知道循环次数的情况下重复执行某段代码。
- 语法:
for (初始化; 条件; 更新) { // 循环体 }
- 示例:
for (int i = 0; i < 10; i++) { System.out.println(i); }
增强的 for 循环(for-each 循环):
- 用于遍历数组或集合。
- 语法:
for (元素类型 元素 : 集合) { // 循环体 }
- 示例:
int[] numbers = {1, 2, 3, 4, 5}; for (int number : numbers) { System.out.println(number); }
while 循环:
- 用于在条件为真时重复执行某段代码。
- 语法:
while (条件) { // 循环体 }
- 示例:
int i = 0; while (i < 10) { System.out.println(i); i++; }
do-while 循环:
- 类似于 while 循环,但至少执行一次循环体。
- 语法:
do { // 循环体 } while (条件);
- 示例:
int i = 0; do { System.out.println(i); i++; } while (i < 10);
分支结构
if 语句:
- 根据条件执行代码块。
- 语法:
if (条件) { // 代码块 }
- 示例:
int number = 10; if (number > 0) { System.out.println("Number is positive."); }
if-else 语句:
- 根据条件在两个代码块之间选择执行。
- 语法:
if (条件) { // 代码块1 } else { // 代码块2 }
- 示例:
int number = -10; if (number > 0) { System.out.println("Number is positive."); } else { System.out.println("Number is negative or zero."); }
if-else if-else 语句:
- 根据多个条件选择执行代码块。
- 语法:
if (条件1) { // 代码块1 } else if (条件2) { // 代码块2 } else { // 代码块3 }
- 示例:
int number = 0; if (number > 0) { System.out.println("Number is positive."); } else if (number < 0) { System.out.println("Number is negative."); } else { System.out.println("Number is zero."); }
switch 语句:
- 根据变量的值执行不同的代码块。
- 语法:
switch (变量) { case 值1: // 代码块1 break; case 值2: // 代码块2 break; // 更多 case default: // 默认代码块 }
- 示例:
int day = 3; switch (day) { case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; case 3: System.out.println("Wednesday"); break; default: System.out.println("Other day"); }
习题
习题1:根据分数给出成绩评价
public String getLevelStringByScore(int score) {
if (score > 100 || score < 0) return "非法成绩"; //非法成绩判断
if (score >= 90) {
return "优秀"; //优秀 90-100
} else if (score >= 80) {
return "良好";//良好 80-89
} else if (score >= 60) {
return "合格"; //合格 60-79
} else {
return "不合格"; //不合格 0-59
}
}
for each遍历分数数组
int[] scores = {71,89,67,53,78,64,92,56,74,85}; //分数样例
for (int i : scores) System.out.println(i+"对应的等级是:"+WORK1.getLevelStringByScore(i));
习题2:根据月份返回季节
public String getSeasonNameByMonth(int month) {
if (month > 12 || month < 1) return "非法季节"; //非法季节判断
switch (month) {
case 3:
case 4:
case 5:
return "春季"; // 3-5范围的处理
case 6:
case 7:
case 8:
return "夏季"; // 6-8 范围的处理
case 9:
case 10:
case 11:
return "秋季"; //9-11范围的处理
default:
return "冬季"; //剩下1,2,12为冬季
}
}
习题3:细菌分裂问题
public int cellDivision(int generation){
if(generation < 1) return 0;//小于一代为0
if(generation == 1) return 1; else return cellDivision(generation - 1 ) * 2;
//若为第一代 则返回1 若超过一代 则递归上一代的菌群数量 并乘2
}
习题4:斐波那契数列
public int fbnq(int n){
if(n < 1 ) return 0; //第0个或负数个返回0
if( n == 1 || n == 2) return 1; else return fbnq(n-1) + fbnq(n-2);
//因递归涉及前两个元素 先做好第1,2个元素的判断均为1 从第三个开始 递归前两个值并求和
}
习题4:冒泡排序
由小到大:
/*
* 由小到大
* */
public int[] BubbleSortArray(int[] toBeSorted) {
int length = toBeSorted.length;
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (toBeSorted[j] < toBeSorted[i]) {
int temp = toBeSorted[j];
toBeSorted[j] = toBeSorted[i];
toBeSorted[i] = temp;
}
//从第一个元素遍历到最后一个 每一个遍历到的元素都和后面的每一个其他元素做比较 碰到小者进行交换
}
}
return toBeSorted;
}
由大到小:
/*
* 由大到小
*
* */
public int[] BubbleSortArrayReverse(int[] toBeSorted) {
int length = toBeSorted.length;
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (toBeSorted[j] > toBeSorted[i]) {
int temp = toBeSorted[j];
toBeSorted[j] = toBeSorted[i];
toBeSorted[i] = temp;
}
//从第一个元素遍历到最后一个 每一个遍历到的元素都和后面的每一个其他元素做比较 碰到大者进行交换
}
}
return toBeSorted;
}
总结
- 循环结构:
for
、while
、do-while
和增强的for
循环用于重复执行代码。 - 分支结构:
if
、if-else
、if-else if-else
和switch
语句用于根据条件执行不同的代码块。
理解这些基本结构是编写高效和可维护Java代码的基础。