1.if-else条件判断的几种结构
1.1结构1
if(条件表达式){
执行表达式
}
1.2结构2
二选一:
if(条件表达式){
执行表达式1
}else{
执行表达式2
}
1.3结构3
n选一
if(条件表达式){
执行表达式1
}else if(条件表达式){
执行表达式2
}else if(条件表达式){
执行表达式3
}
…
else{
执行表达式n
}
2.说明
- else 结构是可选的。
- 针对于条件表达式:
如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行了。 - if-else结构是可以相互嵌套的。
- 如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略的。但是,不建议大家省略。
3.练习
1.岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断
import java.util.Scanner;
class IfTest
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入岳小鹏成绩:");
int score = scan.nextInt();
//java语言不能连着比较,因为第一个比较完成之后,输出的为boolean类型,不能与数值型比较了
//else if(80 < score <= 99)
if(score == 100)
{
System.out.println("奖励BWM");
}
else if(score > 80 && score <= 99)
{
System.out.println("奖励iphone xs max");
}
else if(score > 60 && score <= 80)
{
System.out.println("奖励iPad");
}
else
{
System.out.println("没有奖励");
}
}
}
2.编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。
import java.util.Scanner;
class IfTest2
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个整数");
int num1 = scan.nextInt();
System.out.println("请输入第二个整数");
int num2 = scan.nextInt();
System.out.println("请输入第三个整数");
int num3 = scan.nextInt();
if(num1 >= num2)
{
if(num3 >= num1)
{
System.out.println(num2 + "," + num1 + "," + num3);
}
else if(num3 <= num2)
{
System.out.println(num3 + "," + num2 + "," + num1);
}
else
{
System.out.println(num2 + "," + num3 + "," + num1);
}
}
else if(num1 <= num2)//可以直接优化成else
{
if(num3 >= num2)
{
System.out.println(num1 + "," + num2 + "," + num3);
}
else if(num3 <= num1)
{
System.out.println(num3 + "," + num1 + "," + num2);
}
}
}
}
3.对下列代码,若有输出,指出输出结果。(就近原则)
int x = 4;
int y = 1;
if (x > 2) {
if (y > 2)
System.out.println(x + y);
System.out.println("atguigu");
} else
System.out.println("x is " + x);
分析:分析:x>2,符合,但是y并不大于2.这部分有2行代码,分别是System.out.println(x+y);和 System.out.println(“atguigu”);在没有括号的情况下,只能有一句跟着if(y>2),就是上边的第一句System.out.println(x+y);,如果不符合则为输出atguigu,所以这道题输出为atguigu。
4.我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每
一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗
相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人
类的年龄。如果用户输入负数,请显示一个提示信息
Scanner scan = new Scanner(System.in);
System.out.println("请输入狗的年龄:");
int dogage = scan.nextInt();
if(dogage <= 2)
{
System.out.println("狗的年龄是:" + dogage * 10.5);
}
else if(dogage > 2)
{
System.out.println("狗的年龄是:" + (2 * 10.5 + (dogage - 2)*4));
}
else
{
System.out.println("狗狗还没出生啊");
}
5.如何获取一个随机数:10-99
double value = (int)(Math.random() * 90 + 10);//[0.0,1.0) --> [0.0,90.0) --> [10.0,100.0) --> [10,99]
System.out.println(value);
//公式:[a,b]: (int)(Math.random() * (b -a +1) + a)
6.大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出
一定的条件:高:180cm以上;富:财富1千万以上;帅:是。
? 如果这三个条件同时满足,则:“我一定要嫁给他!!!” ? 如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
? 如果三个条件都不满足,则:“不嫁!”
class IfExer1
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的身高:(cm)");
int height = scan.nextInt();
System.out.println("请输入你的财富:(千万)");
double wealth = scan.nextDouble();
/*
System.out.println("请输入你是否帅:(true/false))");
boolean isHandsome = scan.nextBoolean();
方式1
if(height >= 180 && wealth >= 1 && isHandsome == true)
{
System.out.print("perfect!");
}
else if(height >= 180 || wealth >= 1 || isHandsome == true)
{
System.out.print("ordinary");
}
else
{
System.out.print("no");
}
*/
//方式2
System.out.println("请输入你是否帅:(是/否))");
String isHandsome = scan.next();
if(height >= 180 && wealth >= 1 && isHandsome.equals("是"))
{
System.out.print("perfect!");
}
else if(height >= 180 || wealth >= 1 || isHandsome.equals("是"))
{
System.out.print("ordinary");
}
else
{
System.out.print("no");
}
}
}