结构一: 单分支条件判断 :if
格式:
if(条件表达式) {
语句块;
}
说明:条件表达式必须是布尔表达式(关系表达式或逻辑表达式)或布尔变量
结构二:双分支条件判断: if-else
格式
if(条件表达式) {
语句块1;
}else {
语句块2;
}
格式三: 多分支条件判断: if...else if....else
格式
if (条件表达式1) {
语句块1;
} else if (条件表达式2) {
语句块2;
}
...
}else if (条件表达式n) {
语句块n;
} else {
语句块n+1;
}
说明:一旦表达式为true , 则进入执行相应的语句块,执行完成对应的语句块之后 ,就跳出当前结构
注意:
互斥
”关系时(即彼此没有交集),条件判断语句及执行语句间顺序无所谓。包含
”关系时,“小上大下 / 子上父下
”,否则范围小的条件表达式将不可能被执行。其他说明:
{}可以省略
,但建议保留基本语法
语法格式:
switch(表达式){
case 常量值1:
语句块1;
//break;
case 常量值2:
语句块2;
//break;
// ...
[default:
语句块n+1;
break;
]
}
使用注意点:
利用case的穿透性:
使用范围更广
。使用场景较狭窄
。效率稍高
。当条件是区间范围的判断时,只能使用if语句。穿透性
,同时执行多个分支,而if...else没有穿透性。基本语法:
语法格式
for (①初始化部分; ②循环条件部分; ④迭代部分){
③循环体部分;
}
执行过程: ①-②-③-④-②-③-④-②-③-④-.....-②
图示
说明:
基本语法
语法格式
①初始化部分
while(②循环条件部分){
③循环体部分;
④迭代部分;
}
执行过程: ①-②-③-④-②-③-④-②-③-④-...-②
图示:
说明:
基本语法
语法格式
①初始化部分;
do{
③循环体部分
④迭代部分
}while(②循环条件部分);
执行过程:①-③-④-②-③-④-②-③-④-...-②
图示:
说明:
嵌套循环就是把内层循环当成外层循环的循环体
。只有当内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的外层循环。
m
次,内层为n
次,则内层循环体实际上需要执行m*n
次。
行数
,内层循环控制列数
。
关键字 | 适用范围 | 在循环结构中使用的作用 |
---|---|---|
break | switch-case循环结构 | 一旦执行,就结束(或跳出)当前循环结构 |
continue | 循环结构 | 一旦执行,就结束(或跳出)当次循环结构 |
此外,很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它,但使程序容易出错。Java中的break和continue是不同于goto的。
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
next() / nextXxx()
),来获取指定类型的变量scan.close();
获取随机数代码演示:
class MathRandomTest {
public static void main(String[] args) {
double value = Math.random();
System.out.println(value);
//[1,6]
int number = (int)(Math.random() * 6) + 1; //
System.out.println(number);
}
}
应用类:NorthAccount
package com.north;
/**
* @author Stone
* @date 2024/1/17$
*/
@SuppressWarnings("all")
public class NorthAccount {
public static void main(String[] args) {
boolean flag = true;
String details = "收支\t 账户金额\t 收支金额\t 说明\n";
int acount = 10000;
while (flag) {
System.out.println("-------------------------------谷粒记账软件-----------------------------------");
System.out.println(" 1.收支明细 ");
System.out.println(" 2.登记收入 ");
System.out.println(" 3.登记支出 ");
System.out.println(" 4.退出 \n ");
System.out.print(" 请选择(1-4):");
char selection = Utility.readMenuSelection(); // 进行选择
switch (selection) {
case '1':
System.out.println("-------------------------当前手指明细记录-------------------------------");
System.out.println("-----------------------------------------------------------------------");
System.out.println(details);
break;
case '2':
System.out.print("本次输入金额:");
int amount1 = Utility.readNumber();
System.out.print("本次收入说明:");
String desc1 = Utility.readString();
acount += amount1;
details += "收入\t" + acount + "\t\t" + amount1 + "\t\t" + desc1 + "\n";
break;
case '3':
System.out.print("本次支出金额:");
int amount2 = Utility.readNumber();
System.out.print("本次支出说明:");
String desc2 = Utility.readString();
acount -= amount2;
details += "支出\t" + acount + "\t\t" + amount2 + "\t\t" + desc2 + "\n";
break;
case '4':
System.out.print("确认是否退出(Y/N): ");
char confirmSelection = Utility.readConfirmSelection();
if (confirmSelection == 'Y'){
flag = false;
}
break;
}
}
}
}
工具类:Utility
package com.north;
import java.util.Scanner;
/**
* @author Stone
* @date 2024/1/17$
*/
@SuppressWarnings("all")
public class Utility {
private static Scanner scanner = new Scanner(System.in);
/**
用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
*/
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1);
c = str.charAt(0);
if (c != '1' && c != '2' && c != '3' && c != '4') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
/**
用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
*/
public static int readNumber() {
int n;
for (; ; ) {
String str = readKeyBoard(4);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
/**
用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。
*/
public static String readString() {
String str = readKeyBoard(8);
return str;
}
/**
用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
*/
public static char readConfirmSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
private static String readKeyBoard(int limit) {
String line = "";
while (scanner.hasNext()) {
line = scanner.nextLine();
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}