目录
三、多个分支 if...else if...else(级联)与 switch...case...default
计算机对数据进行比较,再根据比较的结果,决定做、还是不做某些动作,就要用到if语句,画出流程图可以帮助更好理解。以自动售票机为例:
A. 读取(用户):
1. 用户选择终点和线路,确定票面价格 price(假设为10元)
2. 用户投入人民币,实际投入金额 amount
B. 计算 + 判断(售票机):
钱够 (amount >= 10) or 不够 (amount < 10)
C. 输出(售票机):
1. 打印车票并找零 change
2. 钱不够,告知用户余额不足
转化成代码:
Scanner in = new Scanner(System.in);
int amount;
System.out.print("请投币:");
amount = in.nextInt();
if (amount >= 10.0)
{
System.out.print("找零:" + (amount - 10));
}
else
{
System.out.print("钱不够:需要 " + 10 + ",还缺 " + (10 - amount));
}
【Java编程】编程基础--计算0 赞同 · 0 评论文章正在上传…重新上传取消
一、没分支 if...
仅一个基本的if语句,表示条件的逻辑表达式为true,那么执行后面大括号中语句,否则跳过这些语句不执行,而继续下面其他语句。
语法结构
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
// 或者
if(amount >= price)
change = amount - price ; //如果条件满足,只要做一件事件,也可以直接写事情,而不用大括号。
二、两个分支 if ...else...
2.1 if...else...
语法结构:
变量初始化;
if(分支条件)
{
程序1;
}
else
{
程序2;
}
应用:
常用于判断两个数字的大小,做不同处理;判断数字奇偶做不同处理;输入数字进入不同分支程序。
2.2 嵌套函数 if...else if...
当if的条件满足或者不满足的时候,要执行的语句也用一条if或者if-else语句,这就是嵌套的if语句。 else总是和最近的那个if匹配,除非用{}限制。
语法结构:
if(布尔表达式1)
{
//如果布尔表达式1的值为true执行代码
if(布尔表达式2)
{
//如果布尔表达式2的值为true执行代码
}
}
应用:
三个数a,b,c判断大小。
如果不用嵌套结构,就a和b先比较大小,得到的结果用一个变量接收,再用这个结果和剩下的c继续比较。
用嵌套结构,特别适合逻辑树处理问题(a>b 和 a>c 同时满足,Max = a)
Scanner in = new Scanner(System.in);
int a, b, c;
a = in.nextInt();
b = in.nextInt();
c = in.nextInt();
int max = 0;
if (a > b)
{
if (a > c) {
max = a;
}
else
{
max = c;
}
}
else
{
if (b > c)
{
max = b;
}
else
{
max = c;
}
}
System.out.println("Max:" + max);
上面的代码风格比较适合 Command +/ 注释。
三、多个分支 if...else if...else(级联)与 switch...case...default
3.1 if...else if...else
if 语句可以有若干个 else if 语句,它们必须在 else 语句之前;
if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后;
一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行(相互独立不重叠);
级联的所有else要对齐;
语法:
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
应用:
可以用于分段函数(合并起来是全集)或者用于检测多种可能的情况(类似switch...case)
Scanner in = new Scanner(System.in);
int a;
a = in.nextInt();
if(a < 10)
{
a = -1;
}
else if (a == 10)
{
a = 10;
}
else
{
a = 2 * a;
}
System.out.println("a:"+ a);
if语句常见错误:
- 忘记大括号,永远在if或else后面都用{},即使只有一条语句;
- if()后面的分号;
- 错误使用==和=;
- else总是和最近的if匹配,注意用大括号限制;
3.2 switch...case...default
语法结构:
输入分支条件变量 ;
switch(控制表达式)
{
case 分支条件1(常量):
语句1;
break;(可选)
...
case 分支条件n(常量):
语句n;
break;(可选)
default:
语句;
}
控制表达式只能是整数型的结果;根据计算表达式的结果,寻找匹配的case,并执行case后面语句,一直到break为止,跳出switch...case。如果没有break,就会将所有case都走一遍。
应用:输入不同数字,显示不同颜色;输入不同星座,显示不同月份。
Scanner in = new Scanner(System.in);
int type = in.nextInt();
switch(type)
{
case 1:
System.out.println("red");
break;
case 2:
System.out.println("yellow");
break;
default:
System.out.println("others");
break;
}