【Java】P4 流程控制(顺序结构、分支结构、循环结构)
创始人
2025-05-28 20:07:55

Java 流程控制

  • 顺序结构
  • 分支结构 if
    • 分支结构一
    • 分支结构二
    • 分支结构三
  • 分支结构 switch
    • 分支结构四
    • 分支结构五
  • 循环结构
    • 循环结构 for
    • 循环结构 while
    • 循环结构 do...while...
  • 题目案例

Java流程控制包含三种流程结构:顺序结构分支结构循环结构



顺序结构

代码从上往下顺序执行;



分支结构 if

分支结构关键词:if else else if

通过 if 构建的分支结构存在三种结构格式:

分支结构一

if

int i = 5;
if(i>4) {System.out.println(i + "大于4!");
}

分支结构二

if…else

int num = 13;
if(num % 2 == 1) {System.out.println(num + "是奇数!");
}else{System.out.println(num + "是偶数!");
}

分支结构三

if…else if… else…

int score = 61;
if(score == 100) {System.out.println("奖励一个跑车");
}else if(score > 80) {System.out.println("奖励一个山地自行车");
}else if(score > 60) {System.out.println("奖励环球影城一日游");
}else{System.out.println("胖揍一顿");
}

分支结构 switch

我们除了可以通过 if 构建分支结构外,还可以通过 switch 构建分支结构;

switch 中表达式只能是特定的数据类型,如下:byte \ short \ char \ int \ 枚举 \ String

分支结构四

int num = 1;
switch(num) {case 0: System.out.println("zero");break;case 1: System.out.println("one");break;case 2: System.out.println("two");break;case 3: System.out.println("three");break;default:System.out.println("other");break;
}

分支结构五

case 穿透

score = 71
switch(score / 10) {case 0:case 1:case 2:case 3:case 4:case 5:System.out.println("不及格");break;case 6:case 7:case 8:case 9:case 10: System.out.println("及格");break;default:System.out.println("成绩输入错误");break;
}


循环结构

循环结构 for

for(int i = 0; i < 5; i++) {System.out.println("输出第" + i + "次");
}

e.g.e.g.e.g. 输出所有水仙花数,所谓水仙花数,就是一个三位数,其各个位上数立方和等于其本身;

for(int i = 100; i < 999; i++) {int ge = i % 10;int shi = i / 10 % 10;int bai = i / 100 % 10;if(i == ge*ge*ge + shi*shi*shi + bai*bai*bai) {System.out.println(i + "是水仙花.");}
}

e.g.e.g.e.g. 输入两个正整数m和n,求最大公约数以及最小公倍数

Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();for(int i = ((m 0; i--){if(m % i == 0 && n % i ==0){System.out.println("最大公约数为:" + i);break;}
}for(int i = ((m>n)?m:n); i <= m*n; i++){if(i % m == 0 && i % n ==0){System.out.println("最小公倍数为:" + i);break;}
}

循环结构 while

int i = 0;
while(i < 50) {System.out.println("输出第" + i + "次");i++;
}

e.g.e.g.e.g. 随机生成一个 [1,100] 随机数,从键盘键入,提示大了或者小了,对了就不用猜了,统计一共猜了多少次;

int num = (int)(Math.random() * 100) + 1;
int time = 1;
Scanner scan = new Scanner(System.in);
System.out.println("请输入1-100范围的一个整数");
int guess = scan.nextInt();while(num != guess){if(num < guess){System.out.println("你输入的数据大了");}else{System.out.println("你输入的数据小了");}System.out.println("请输入1-100范围的一个整数");time++;guess = scan.nextInt();
}System.out.println("猜对了!你猜了" + time + "次");scan.close();

e.g.e.g.e.g. 珠穆朗玛峰 8848.86米,一张足够大的纸来回折,厚度0.1毫米,折叠多少次折成珠穆朗玛峰高度?

int times = 0;
double height = 0.0001;
while(height < 8848.86){height *= 2;times++;
}
System.out.println("折了" + times + "次");

循环结构 do…while…

int i = 1;
do{System.out.println("输出第" + i + "次");	i++;
}while(i <= 5);

e.g.e.g.e.g. 银行ATM ①存款 ②取款 ③显示余额 ④退出

Scanner scan = new Scanner(System.in);
boolean flag = true;
double balance = 0;do {System.out.println("======ATM======");System.out.println("1、存款");System.out.println("2、取款");System.out.println("3、显示余额");System.out.println("4、退出");int selection = scan.nextInt();switch (selection){case 1:System.out.println("当前余额为:" + balance);System.out.println("请输入存款的金额: ");double moneyin = scan.nextDouble();if(moneyin > 0) {balance += moneyin;}System.out.println("存款完成,存入:" + moneyin + "; 账户余额为:" + balance);break;case 2:System.out.println("当前余额为:" + balance);System.out.println("请输入取款的金额:");double moneyout = scan.nextDouble();if(balance >= moneyout && moneyout > 0) {balance -= moneyout;System.out.println("取款完成,取出:" + moneyout + "; 账户余额为:" + balance);}else{System.out.println("取款失败,账户余额不足,余额为:" + balance);}break;case 3:System.out.println("账户当前余额为:" + balance);break;case 4:System.out.println("感谢使用,再见!");flag = false;break;}}while(flag);scan.close();


题目案例

e.g.e.g.e.g. 找出100以内的所有素数(质数)?

方法一:花费时长:623

long start = System.currentTimeMillis();
System.out.println("2是质数");
for(int i = 2; i < 100000; i++){for(int j = 2; j < i; j++){if (i % j == 0){break;}if (j == i-1) {System.out.println(i + "是质数");}}
}
long end = System.currentTimeMillis();
System.out.println("花费的时间为:" + (end-start));

方法二:花费时长:6

int count = 0;long start = System.currentTimeMillis();
for(int i = 2; i < 100000; i++){boolean flag = false;for(int j = 2; j <= Math.sqrt(i); j++){if (i % j == 0){flag = true;break;}}if (flag == false){count++;// System.out.println(i + "是质数");}
}
long end = System.currentTimeMillis();
System.out.println("质数的总数为:" + count);
System.out.println("花费的时间为:" + (end-start));

相关内容

热门资讯

桐昆股份股价涨5.02%,国投... 12月17日,桐昆股份涨5.02%,截至发稿,报15.05元/股,成交3.58亿元,换手率1.02%...
海光信息股价涨5.04%,华泰... 12月17日,海光信息涨5.04%,截至发稿,报207.71元/股,成交32.87亿元,换手率0.7...
广发证券股价涨5.05%,农银... 12月17日,广发证券涨5.05%,截至发稿,报22.25元/股,成交15.50亿元,换手率1.21...
胜宏科技股价涨5.04%,嘉合... 12月17日,胜宏科技涨5.04%,截至发稿,报301.55元/股,成交101.97亿元,换手率4....
胜宏科技股价涨5.04%,宝盈... 12月17日,胜宏科技涨5.04%,截至发稿,报301.55元/股,成交102.02亿元,换手率4....