程序控制语句
概述
在程序中,程序运行的流程控制决定程序是如何执行的,主要有三大流程控制语句:
- 顺序控制
- 分支控制
- 循环控制
顺序控制
概述
程序从上到下逐行地执行,中间没有任何判断和跳转。
Java语言中定义变量时采用合法的前向引用,例如:
public class Test{
int num1 = 1;
int num2 = num1 + 1;
}
图示
分支控制
概述
让程序有选择的执行,分支控制有三种:
- 单分支语句,if
- 多分支语句,if - else
- 多分支语句,if - else if - else
单分支
语法
if(条件表达式){
代码块;
}
Tips:
- 当条件表达式执行结果为true时,则执行{}里的代码块;当条件表达式执行结果为false时,则不执行;
- 如果{ }中只有一条语句,则可以不用{ }
流程图
示例
// 导入包
import java.util.*;
public class If01{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("输入您的分数:");
int score = myScanner.nextInt();
if(score > 60){
System.out.println("及格");
}
}
}
双分支
语法
if(条件表达式){
代码块1;
}
else{
代码块2;
}
Tips:当条件表达式执行结果为true时,执行代码块1;当条件表达式执行结果为false时,执行代码块2;
流程图
示例
需求:18岁以上(包含18岁)显示允许,18岁以下显示未达到合适年龄。
import java.util.Scanner;
public class If02{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("请输入您的年龄:");
int age = myScanner.nextInt();
if(age >= 18){
System.out.println("合格!");
}
else{
System.out.println("未达到要求年龄!");
}
}
}
多分支
语法
if(条件表达式){
代码块1;
}
else if{
代码块2;
}
else{
代码块n;
}
Tips:
- 在多分支中可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有
- 如果有else,如果所有的条件表达式都不成立,则默认执行else中的代码块n
流程图
示例
需求:输入当前的信用分数,分数为100分显示信用极好;分数为80-99[包含80与99]显示信用优秀;分数为60-80[包含60,不包含80]显示信用一般,其他情况显示不及格;
import java.util.Scanner;
public class If03{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("请输入您的信用分数:");
int score = myScanner.nextInt();
if(score == 100){
System.out.println("信用极好");
}
else if(score > 80 && score <= 99){
System.out.println("信用优秀");
}
else if(score >= 60 && score < 80){
System.out.println("信用一般");
}
else{
System.out.println("不及格");
}
}
}
嵌套分支
概述
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支结构称为内层分支,外面的分支结构称为外称分支。
语法
if{
if(){
}
else{
}
}
示例
比赛规则,如果初赛成绩大于8.0则进入决赛,否则淘汰,进入决赛后会根据选手的性别进入男子组或女子组;
import java.util.Scanner;
public class If04{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("请输入选手的最终得分:");
double score = myScanner.nextDouble();
if(score > 8.0){
System.out.print("该选手进入决赛,请输入选手的性别:");
char gender = myScanner.next().charAt(0);
if(gender == '男'){
System.out.println("进入男子组");
}
else{
System.out.println("进入女子组");
}
}
else{
System.out.println("该选手已被淘汰");
}
}
}
switch分支结构
语法
switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
case 常量n:
代码块n;
break;
default:
default代码块;
break;
}
Tips:
- 如果表达式的值等于常量1,则执行代码块1;
- 如果表达式的值不等于常量1,则继续向下匹配case 对于的常量值;
- 如果表达式的值没有匹配上case 对应的常量值,则执行default对应的default代码块;
- break语句的作用为代码块执行结束之后,跳转switch分支语句;
- 表达式的返回值必须时byte、short、int、char、enum、String;
流程图
练习
题目:考试得分有四个等级,A - 优秀,B - 良好, C - 及格,D - 未达标,输入其他字符 - 请重新输入
import java.util.Scanner;
public class Switch01{
public static void main(String[] agrs){
Scanner myScanner = new Scanner(System.in);
System.out.print("请您输入考核等级:");
char level = myScanner.next().charAt(0);
switch(level){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("一般");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("未达标");
break;
default:
System.out.println("未识别,请您重新输入");
break;
}
}
}
return
当return用在方法时,表示跳出方法;当return用在main里面时,表示退出程序;
for循环
代码可以循环执行
语法
for(循环变量初始化;循环条件;循环变量迭代){
代码块;
}
Tips:
- for 关键字,表示循环控制;
- for循环四要素:循环变量初始化,循环条件,循环操作,循环变量迭代;
- 如果代码块中只有一条语句,可以省略{ };
流程图
输出10行相同语句
public class For01{
public static void main(String[] args){
for(int i = 1; i < 11; i++){
System.out.println("第" + i + "次:"+ "xbxaq.com");
}
}
}
打印1~100之间是9倍数的整数,统计个数与总和
public class For02{
public static void main(String[] args){
// 个数
int num = 0;
// 总和
int sum = 0;
for(int i = 1; i < 101; i++){
if(i % 9 == 0){
sum += i;
num += 1;
}
}
System.out.println("100以内的9倍数的个数为" + num);
System.out.println("100以内的9倍数整数的总和为" + sum);
}
}
用代码实现以下的语句
0 + 5 = 5
1 + 4 = 5
2 + 3 = 5
3 + 2 = 5
4 + 1 = 5
5 + 0 = 5
public class For03{
public static void main(String[] args){
int y = 5;
for(int i = 0;i <= 5; i++,y--){
System.out.println(i + " + " + y + " = " + (i + y));
}
}
}
while循环
语法
while(循环条件){
代码块-循环语句;
循环变量迭代;
}
Tips:while循环先判断再执行语句
流程图
输出10行相同语句
public class While01{
public static void main(String[] args){
int i = 1;
while(i < 11){
System.out.println("第" + i + "次:" + "xbxaq.com");
i += 1;
}
}
}
打印1-100之间所有能被3整除的数
public class While02{
public static void main(String[] args){
int i = 1;
while(i < 101){
if(i % 3 == 0){
System.out.println(i);
}
i += 1;
}
}
}
do...while循环
语法
do{
代码块;
循环变量迭代;
}while(循环条件);
Tips:先执行,再判断(至少执行一次),最后有个分号
流程图
练习
public class DoWhile01{
public static void main(String[] args){
int i = 1;
do{
System.out.println("小白学安全");
i += 1;
}while(i > 5);
System.out.println("xbxaq.com");
}
}
多重循环
概述
将一个循环放在另一个循环体内,则形成嵌套循环,其中for、while、do...while都可作为外层循环和内层循环。
多重循环的本质就把内层循环当成外层循环的循环体,只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层循环的当次循环,开始下一次循环。
案例-9*9乘法表
public class Double{
public static void main(String[] args){
for(int i = 1; i < 10; i++){
System.out.println();
for(int y = 1; y < (i + 1); y++){
System.out.print(y + "*" + i + "=" + (i * y) + ' ');
}
}
}
}
跳转控制语句
break
break语句用于终止某个语句块的执行,一般使用在switch或循环语句中,跳出循环。
练习
public class Break01{
public static void main(String[] args){
for(int i = 1;i < 5; i++){
if(i == 3){
System.out.println("666");
break;
}
System.out.println("777");
}
}
}
continue
continue语句用于结束本次循环,继续执行下一次循环。
练习
public class Break01{
public static void main(String[] args){
for(int i = 1;i < 5; i++){
if(i == 3){
System.out.println("666");
// break;
continue;
}
System.out.println("777");
}
}
}
练习
1、某人有100,000元,每经过一次路口,需要交过路费,规则如下:1.当现金>50000时,每次交5%;2.当现金<=50000时,每次交1000;
问:该人可以经过多少次路口?
public class HomeWork01{
public static void main(String[] args){
double money = 100000;
int count = 0;
while(true){
if(money > 50000){
money *= 0.95;
count ++;
}
else if(money >= 1000){
money -= 1000;
count++;
}
else{
break;
}
}
System.out.println(count);
}
}
2、判断输出的整数是否为水仙花数
所谓的水仙花数是指一个三位数,其各个位上的数字立方和等于其本身,例如:153 = 1*1*1 + 5*5*5 +3*3*3
import java.util.Scanner;
public class HomeWork02
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("请输入一个整数用于检测是否为水仙花数:");
int n = myScanner.nextInt();
int n3 = n / 100;
int n2 = n % 100 / 10;
int n1 = n % 10;
if(n1 * n1 * n1 + n2 * n2 * n2 + n3 * n3 * n3 == n){
System.out.println(n + "是水仙花数");
}
else{
System.out.println(n + "不是水仙花数");
}
}
}
3、判断输入的年份是否是闰年
/**
* 判断输入的年份是否为闰年,需要满足的条件:
* 1、可以被4整除且不能被100整除;
* 2、可以被400整除;
*/
import java.util.Scanner;
public class HomeWork03{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = myScanner.nextInt();
if(year % 4 == 0 && year % 100 != 0){
System.out.println(year + "是闰年");
}
else if(year % 400 ==0){
System.out.println(year + "是闰年");
}
else{
System.out.println(year + "不是闰年");
}
}
}
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论