流程控制语句的介绍
流程控制语句:通过一些语句,来控制程序的【执行】流程
流程控制语句
1、顺序结构
Java程序默认的执行流程,没有特定的语法结构,按照代码的先后顺序,依次执行程序中大多数的代码都是这样执行的。
public class Test{
public static void main(String[] arg){
System.out.println("A");
System.out.println("B");
System.out.println("C");
}
}
开始->语句A->语句B->语句C->结束 依次执行
2、分支结构
if语句:
格式1:
if(判断条件){
语句体;
}
执行流程:
①首先计算判断条件的结果
②如果条件的结果为true就执行语句体
③如果条件的结果为false就不执行语句体
格式2:
if(判断条件){
语句体1;
}else{
语句体2;
}
执行流程:
①首先计算判断条件的结果
②如果条件的结果为true就执行语句体1
③如果条件的结果为false就执行语句体2
格式3:
if(判断条件1){
语句体1;
}else if(判断条件2){
语句体2;
}else if(判断条件3){
语句体3;
}.......
else{
语句体n+1;
}
执行流程:
①首先计算判断条件1的结果
②如果条件的结果为true就执行语句体1
③条件的结果为false计算判断条件2的结果
④如果条件的结果为true就执行语句体2
⑤条件的结果为false计算判断条件3的结果
⑥如果条件的结果为true就执行语句体3
⑦判断条件都不满足那么就执行else里的语句体n+1
示例
public class IfDemo{
public static void main(String [] args){
IfDemo.ifTest1();
IfDemo.ifTest2();
IfDemo.ifTest3();
}
public static void ifTest1(){
System.out.println("开始");
int age = 18;
if(age>=18){
System.out.println("可以上网吧!")
}
System.out.println("结束");
}
public static void ifTest2(){
System.out.println("开始");
int age = 17;
if(age>=18){
System.out.println("可以上网吧!");
}else{
System.out.println("年龄未满18岁不可以上网吧!")
}
System.out.println("结束");
}
public static void ifTest3(){
//键盘录入一个整数数值,表示用户的身份 1:会员 2:非会员 其他:您的输入有误
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
if(num == 1){
System.out.println("会员身份");
}else if(num == 2){
System.out.println("非会员身份");
}else{
System.out.println("您的输入有误");
}
}
}
import java.util.Scanner;
public class IfTest {
public static void main(String[] args){
IfTest.checkPassword();
}
public static void checkPassword(){
for (;;){
//准备Scanner键盘录入
Scanner sc = new Scanner(System.in);
//指挥键盘录入密码
String next = sc.next();
//判断密码是否正确
if (next.equals("123456")){
System.out.println("密码输入正确!");
IfTest.queryPrizeByScore();
break;
}else{
System.out.println("密码输入错误!");
}
}
}
/*
* 需求 键盘录入学生的成绩,根据成绩所在的区间,打印不同的奖励
* 95~100:自行车一辆
* 90~94:游乐园玩一次
* 80~89:变形金刚一个
* 80以下:挨揍
* */
public static void queryPrizeByScore(){
for (;;) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
if (i >= 95 && i <= 100) {
System.out.println("奖励自行车一辆");
break;
} else if (i >= 90 && i <= 94) {
System.out.println("奖励游乐园玩一次");
break;
} else if (i >= 80 && i <= 89) {
System.out.println("奖励变形金刚一个");
break;
} else if (i >= 0 && i < 80) {
System.out.println("奖励挨揍");
break;
} else {
System.out.println("您输入的分数有误");
}
}
}
}
注意事项:
if语句中,如果大括号控制的是一条语句,大括号可以省略不写
if语句的()和{}之间不要写分号
switch语句
格式
switch(表达式:将要匹配的值){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1
break;
}
执行流程
1、拿着()中将要匹配的值,跟case给的选项,逐个进行匹配
匹配成功,执行对应的语句体,再break结束掉整个switch语句。
2、如果给出的所以case都匹配失败了,将会执行最后的default,由break结束掉整个的switch语句
示例
import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
SwitchDemo.switchTest();
}
/*
* 需求键盘录入一个整数,根据录入的数值,程序打印对应的星期
* */
public static void switchTest(){
System.out.println("请输入:");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
switch (i){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("您的输入有误!");
break;
}
switch (i){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default:
System.out.println("您的输入有误!");
break;
}
switch (i){
//JDK14版本开始,case后面允许编写多个数据,多个数据中间用逗号隔开
case 1,2,3,4,5:
System.out.println("工作日");
break;
case 6,7:
System.out.println("休息日");
break;
default:
System.out.println("您的输入有误!");
break;
}
switch (i){
//JDK14版本开始,case后面允许编写多个数据,多个数据中间用逗号隔开
case 1,2,3,4,5 -> System.out.println("工作日");
case 6,7 -> System.out.println("休息日");
default -> System.out.println("您的输入有误!");
}
}
}
注意事项:
1、case后边的值不允许重复
2、case后边的值只能是字面量不能是变量
3、switch() 中可以接收的类型
1).基本数据类型:byte short char int (包装类:Character Byte Short Integer)
2).引用数据类型:JDK5版本之后可以是枚举 JDK7版本之后可以是String字符串、
4、case穿透现象
5、 JDK14版本开始,case后面允许编写多个数据,多个数据中间用逗号隔开
3、循环结构
循环介绍 :循环可以解决的问题 解决重复执行的事情
import java.util.Scanner;
public class ForDemo {
public static void main(String[] args) {
ForDemo.checkPassword();
}
//有三次密码输入机会
public static void checkPassword(){
for (int i = 1; i <= 3; i++){
//准备Scanner键盘录入
Scanner sc = new Scanner(System.in);
//指挥键盘录入密码
String next = sc.next();
//判断密码是否正确
if (next.equals("123456")){
System.out.println("密码输入正确!");
break;
}else{
System.out.println("密码输入错误!");
}
}
}
}
for循环
格式:
for(初始化语句;条件判断语句;条件控制语句){
循环体;
}
案例:
/*
* for循环语句格式
* for(初始化语句;条件判断语句;条件控制语句){
* 循环体;
* }
*
* 执行流程:
* 1、执行初始化语句,在整个循环过程中,只执行一次
* 2、执行判断条件,看其返回结果是true还是false
* false:循环结束
* true:执行第三步
* 3、执行循环体语句
* 4、执行条件控制语句
* 5、回到2继续。。。 直到循环结束
* */
public class ForDemo {
public static void main(String[] args) {
print01();
System.out.println("-------------------");
print02(3);
print02(1);
}
/*
需求:在控制台打印10遍 "CSDN"
*/
public static void print01() {
for (int i = 0; i < 10; i++) {
System.out.println("CSDN");
}
}
/*
需求:在控制台打印n遍 "CSDN"
*/
public static void print02(int n) {
if (n < 1) {
System.out.println("您传入的参数有误,请检查");
} else {
for (int i = 0; i < n; i++) {
System.out.println("CSDN");
}
}
}
}
模拟计时器:
package com.ahui.myfor;
public class ForDemo {
public static void main(String[] args) {
printNumber();
}
/*
需求:使用循环模拟计时器
在控制台打印数字 1~3 循环中控制循环的那个变量,可以在循环体中,继续使用
在控制台打印数字 3~1
*/
public static void printNumber(){
for (int i = 1; i <=3 ; i++){
System.out.println(i);
}
System.out.println("----------");
for (int i = 3; i >=1 ; i--){
System.out.println(i);
}
}
}
求和:
public class ForTest {
public static void main(String[] args) {
System.out.println("请输入一个数得到0到这个数直接的偶数");
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
int nums = sum(i);
System.out.println("0到"+i+"之间的偶数和是:"+nums);
}
public static int sum(int n) {
int temp = 0;
for(int i = 0; i <= n; i++){
if (i%2 == 0){
temp+=i;
}
}
return temp;
}
}