##################################################
目录
##################################################
if 判断语句组合
——————————
判断与条件表达式
%%%%%
if 选择结构是根据条件判断之后再做处理的一种语法结构
if 翻译成思想就是:
如果。。
就。。
在前面我曾在代码中用过 if 语句
很简单好玩的
if-else 抽象一下便是:
如果。。怎么怎么样
就。。怎么怎么样不然就。。怎么怎么样
单 if 选择结构:
处理 单一/组合 的条件的情况
if - else 选择结构:
处理 简单 的条件分支情况
多重 if 选择结构:
可以处理 连续区间 的条件分支情况
嵌套 if 选择结构:
可以处理 复杂 的条件分支情况
%%%%%
条件表达式就是条件表达式啊……
如果最后条件表达式的值为 true 则执行 if 代码块
如果表达式的值为 false 则执行 else 代码块
条件表达式 一般都是需要逻辑运算符的:
运算符 说明 表达式 说明
&& 与、并且、和 条件_1 && 条件_2 所有条件为真 结果真&有一个为假 结果假
|| 或、或者 条件_1 || 条件_2 只要有一个为真 结果真/一个有假 结果假
! 非、不是 ! 条件 条件真 结果假/条件假 结果真
——————————
单 if 语句
%%%%%
单 if 选择结构
单 if 选择结构处理单一条件的情况
如果
条件满足 执行
不满足 跳过
格式:
if ( 条件表达式 ) {
/* 代码块 */
}
——————————
单 if 多判断选择结构
单 if 多判断可以处理组合条件的情况
如果
条件满足 执行
不满足 跳过
格式:
if ( 多个条件 ) {
/* 代码块 */
}
——————————
if-else 选择结构
if-else 选择结构可以处理简单的条件分支情况
如果
条件满足 执行后面的语句
不满足 执行 else 中的语句
格式:
if ( 条件 ) {
/* 满足条件执行 */
} else {
/* 不满足条件执行 */
}
——————————
多重 if 选择结构
多重 if 选择结构可以处理连续区间的条件分支情况
用来解决需要判断的条件是连续的区间时有很大优势
格式:
if ( 条件 ) {
/* 条件成立 执行 */
/* 然后跳出此多重 if 选择结构 执行后面代码 */
/* 条件不成立 则判断下面的 else if 条件 */
} else if ( 条件 ) {
/* 同上 */
} else {
/* 所有条件不成立 执行 */
/* 然后退出这个多重 if 选择结构 执行后面代码 */
}
else if 块可以有多个或没有 这取决于需求
else 块最多一个或没有 必须在 else if 之后
——————————
嵌套 if 选择结构
嵌套 if 选择结构可以处理复杂的条件分支情况
就是在 if 选择结构里面再嵌入 if 选择结构
格式:
if ( 条件 ) {
/* 这边仅仅演示 if-else 中嵌套 if-else 其她嵌套组合可以自己测试 */
if ( 条件 ) {
/* 代码 */
} else {
/* 代码 */
}
} else {
/* 代码 */
}
只有当满足外层 if 选择结构的条件
才会判断内层 if 的条件
else 总是与她前面最近的那个 else 的 if 配对
##################################################
关于多重 if 结构的顺序问题
——————————
更改前后顺序测试
示例项目:
根据 money 判断能吃什么
test.java code:
import java.util.Scanner;
public class test{
public static void main(String[] Args){
Scanner input = new Scanner(System.in);
int money;
int one = 5;
int two = 3;
int three = 2;
System.out.print ( "你有多少钱 <<< ");
money = input.nextInt();
if (money >= one) {
System.out.println ( "太棒了,我可以买面包吃!" );
} else if (money >= two) {
System.out.println ( "不错,我可以买饮料喝!" );
} else if (money >= three) {
System.out.println ( "还好,我还能买辣条儿。。" );
} else {
System.out.println ( "看来,我只能买大白兔了~" );
}
}
}
cmd demo:
C:\Users\byme\javaTest>javac test.java
C:\Users\byme\javaTest>java test
你有多少钱 <<< 6
太棒了,我可以买面包吃!
C:\Users\byme\javaTest>java test
你有多少钱 <<< 5
太棒了,我可以买面包吃!
C:\Users\byme\javaTest>java test
你有多少钱 <<< 4
不错,我可以买饮料喝!
C:\Users\byme\javaTest>java test
你有多少钱 <<< 3
不错,我可以买饮料喝!
C:\Users\byme\javaTest>java test
你有多少钱 <<< 2
还好,我还能买辣条儿。。
C:\Users\byme\javaTest>java test
你有多少钱 <<< 1
看来,我只能买大白兔了~
C:\Users\byme\javaTest>java test
你有多少钱 <<< 0
看来,我只能买大白兔了~
C:\Users\byme\javaTest>
然后我们更改一下代码 将 else if 的顺序稍微改变了一下
虽然不会报错 but 真的能达到理想效果吗?
更改过后的代码:
import java.util.Scanner;
public class test{
public static void main(String[] Args){
Scanner input = new Scanner(System.in);
int money;
int one = 5;
int two = 3;
int three = 2;
System.out.print ( "你有多少钱 <<< " );
money = input.nextInt();
if (money >= one) {
System.out.println ( "太棒了,我可以买面包吃!" );
} else if (money >= three) {
System.out.println ( "还好,我还能买辣条儿。。" );
} else if (money >= two) {
System.out.println ( "不错,我可以买饮料喝!" );
} else {
System.out.println ( "看来,我只能买大白兔了~" );
}
}
}
会发现 本来能买饮料的钱
现在 只能买辣条辽!。。 永远买不到饮料!!
虽然确实是省了钱。。but 达不到预期的效果!!
C:\Users\byme\javaTest>javac test.java
C:\Users\byme\javaTest>java test
你有多少钱 <<< 6
太棒了,我可以买面包吃!
C:\Users\byme\javaTest>java test
你有多少钱 <<< 5
太棒了,我可以买面包吃!
C:\Users\byme\javaTest>java test
你有多少钱 <<< 4
还好,我还能买辣条儿。。
C:\Users\byme\javaTest>java test
你有多少钱 <<< 3
还好,我还能买辣条儿。。
C:\Users\byme\javaTest>java test
你有多少钱 <<< 2
还好,我还能买辣条儿。。
C:\Users\byme\javaTest>java test
你有多少钱 <<< 1
看来,我只能买大白兔了~
C:\Users\byme\javaTest>java test
你有多少钱 <<< 0
看来,我只能买大白兔了~
C:\Users\byme\javaTest>
但是有一种例外
另外一种 情况 比如 多重 if 选择结构中
所有条件之间 只存在简单的互斥 并没有连续的关系
这个时候 对于判断条件来说 并没有顺序要求例如
这个人的国籍问题 是中国呢?还是俄罗斯呢?还是小日本?
这个人的省份问题 是河北呢?还是河南呢?还是四川呢?