1. 程序流程控制介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
1) 顺序控制
2) 分支控制
3) 循环控制
2.顺序结构
2.1不做解释顺序控制比较简单看图解
3.分支控制if-else
3.1分支控制 if-else 介绍
让程序有选择的的执行,分支控制有三种
1) 单分支 if
2) 双分支 if-else
2) 多分支 if-else if -....-else
3.2 单分支if 105
//单分支if-else语句
import java.util.Scanner;
public class Test10
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("请输入年龄");
int age = input.nextInt();
if(age>18)
{
System.out.println("你的年龄大于18岁,要对自己的行为负责,否则送入监狱");
}
System.out.println("程序继续执行……");
}
}
3.3 双分支if-else 106
//双分支if-else 106
import java.util.Scanner;
public class Test10
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("请输入年龄");
int age = input.nextInt();
if(age>18)
{
System.out.println("你的年龄大于18岁,要对自己的行为负责,否则送入监狱");
}
else
{
System.out.println("你的年龄不大这次放过你");
}
System.out.println("程序继续执行……");
}
}
3.4 多分支if-else if -....-else 110
多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有
如果有else如果所有的条件表达式都不成立,则默认执行else代码块
//输入保国同志的芝麻信用分:
//如果: 1) 信用分为 100 分时,输出 信用极好;
// 2) 信用分为(80,99]时,输出 信用优秀;
// 3) 信用分为[60,80]时,输出 信用一般;
// 4) 其它情况 ,输出 信用 不及格
// 5) 请从键盘输入保国的芝麻信用分,并加以判断
import java.util.Scanner;
public class Test10
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("请输入信用分");
int grade = input.nextInt();
if(grade>1 && grade<=100)//判断信用分的有效性
{
if(grade==100)
{
System.out.println("信用极好");
}
else if(grade>80 && grade<=99)
{
System.out.println("信用优秀");
}
else if(grade>=60 && grade<=80)
{
System.out.println("信用一般");
}
else
{
System.out.println("信用不及格");
}
}
else
{
System.out.println("信用分需要在1-100,请重新输入");
}
}
}
4.单双分支练习 108
例1
public class Test10
{
public static void main(String[] args)
{
int x=7;
int y=4;
if(x>5)
{
if(y>5)
{
System.out.println("haha");
}
System.out.println("世界");
}
else
{
System.out.println("你好");
}
}
}
例2
编写程序,声明 2 个 double 型变量并赋值。判断第一个数大于 10.0,且第 2 个数小于 20.0,打印两数之和。
public class Test10
{
public static void main(String[] args)
{
double d1=34.5;
double d2=2.6;
if(d1>10.0 && d2<20.0)
{
System.out.println(d1+d2);
}
}
}
例3
定义两个变量 int,判断二者的和,是否能被 3 又能被 5 整除,打印提示信息
public class Test10
{
public static void main(String[] args)
{
int a=10;
int b=5;
int sum=a+b;
if(sum%3==0 && sum%5==0)
{
System.out.println("和可以被3和5整除");
}
else
{
System.out.println("不可以被3和5整除");
}
}
}
例4
判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被 4 整除,但不能被 100 整除;(2)能被 400 整除
import java.util.Scanner;
public class Test10
{
public static void main(String[] args)
{
Scanner year = new Scanner(System.in);
System.out.println("是否查询闰年");
String s = year.next();
int i=0;
System.out.println("请输入一个年份\n");
int year1=year.nextInt();
if(year1%4==0 && year1%100!=0 || year1%400==0)
{
System.out.println(year1+"是闰年\n");
}
else
{
System.out.println(year1+"不是闰年\n");
}
}
}
5. 多分支练习
public class Test11
{
public static void main(String[] args)
{
boolean b=true;
if(b=false)
{
System.out.println("a");
}
else if (b)
{
System.out.println("b");
}
else if(!b)
{
System.out.println("c");
}
else
{
System.out.println("d");
}
}
}
6. 嵌套分支 112
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外 层分支。不要超过 3 层 (可读性不好)
例1
//参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。
//输入成绩和性别,进行判断和输出信息。[NestedIf.java]
//提示: double score; char gender; 接收字符: char gender = scanner.next().charAt(0)
import java.util.Scanner;
public class Test11
{
public static void main(String[] args)
{
//思路分析
//1. 创建 Scanner 对象,接收用户输入
//2. 接收 成绩保存到 double score
//3. 使用 if-else 判断 如果初赛成绩大于 8.0 进入决赛,否则提示淘汰
//4. 如果进入到 决赛,再接收 char gender, 使用 if-else 输出信息
//代码实现 => 思路 --> java 代码
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入歌手成绩");
double score = myScanner.nextDouble();
if(score>8.0)
{
System.out.println("请输入性别");
char gender = myScanner.next().charAt(0);
if(gender=='男')
{
System.out.println("进入男子组");
}
else if(gender=='女')
{
System.out.println("进入女子组");
}
else
{
System.out.println("性别输入有误,不能参加决赛~");
}
}
else
{
System.out.println("很遗憾,你被淘汰了~");
}
}
}
例2
//打印票价
//旺季
//成人(18-60):60
//儿童(<18):30
//老人(>60):20
//淡季
//成人:40
//其他:20
import java.util.Scanner;
public class Test11
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("当前为旺季(1)还是淡季(2)");
int s1 = input.nextInt();
if(s1==1)
{
System.out.println("请输入年龄");
int age = input.nextInt();
if(age>=18 && age<=60)
{
System.out.println("60");
}
else if(age<18)
{
System.out.println("30");
}
else
{
System.out.println("20");
}
}
else
{
System.out.println("请输入年龄");
int age2 = input.nextInt();
if(age2>=18 && age2<=60)
{
System.out.println("40");
}
else
{
System.out.println("20");
}
}
}
}
7. switch分支结构 114
switch(表达式){
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
……
default:
default语句块
break;
}
例1
请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
a 表示星期一,b 表示星期二 …
根据用户的输入显示相应的信息.要求使用 switch 语句完成
//请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
//a 表示星期一,b 表示星期二 …
//根据用户的输入显示相应的信息.要求使用 switch 语句完成
import java.util.Scanner;
public class Test11
{
public static void main(String[] args)
{
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符a-g");
char c1 = myScanner.next().charAt(0);
switch(c1)
{
case 'a':
System.out.println("中");
break;
case 'b':
System.out.println("国");
break;
case 'c':
System.out.println("人");
break;
//……
default:
System.out.println("输入错误");
}
System.out.println("switch语句结束,程序继续执行");
}
}
. switch语句细节 117
表达式数据类型,应和case后的常量类型一致,或者可以自动转化可以相互比较的类型,比如字符char,而常量是int,具体看图