/*分支结构if-else switch case
if-else:条件判断结构
三种结构:
1.if(条件表达式){
}
2.if(条件表达式){
}else{
}
3.if(条件表达式){
}else if(条件表达式){
}else if(条件表达式){
}……
else{
}
//举例if-else
int heartBeats = 79;
if(heartBeats<60 || heartBeats>100) {
System.out.println("需要做进一步检查。");
//举例2
}
int age=23;
if(age<18) {
System.out.println("你还可以多看看动画片");
}else{
System.out.println("你可以看成人de电影了");
}
// 举例3 多选一
int myAge=22;
if(myAge<=0)
System.out.println("请输入正确的年龄");
else if(myAge<18)
System.out.println("青少年时期");
else if(myAge<35)
System.out.println("青壮年时期");
else if(myAge<60)
System.out.println("中年时期");
else
System.out.println("退休快乐");
//练习********************************************************************(复习题)
//1.求下列程序输出结果
boolean x=true;
boolean y=false;
short z=40;
if((z++==40)&&(y=true)) {//true&&true;z=41
z++; //z=42
}
if((x=false)||(++z==43)){//false||true;z=43
z++; //z=44
}
System.out.println("z="+z);//z=44
//2.定义三个int型变量并赋值,使用三元运算符或if—else获取这三个数中最大数
int a0,a1,a2;
a0=10;
a1=12;
a2=78;
int max=a0;
//if-else
if(a0>=a1) {
if(a0>=a2) {
System.out.println("最大值是:"+max);
}
else {
max=a2;
System.out.println("最大值是:"+max);
}
}else {
max=a1;
if(a1>=a2)
System.out.println("最大值是:"+max);
else {
max=a2;
System.out.println("最大值是:"+max);
}
}
//三元运算符
int max1=(a0>=a1)?a0:a1;
int max2=(max1>=a2)?max1:a2;
System.out.println("最大值是:"+max2);
//3.编写程序,声明2个double变量并赋值,判断第一个数大于10.0且第二个数小于20.0时,打印两数之和,否则,打印两个数乘积
double d1=19.2;
double d2=34.1;
if((d1>10.0)&&(d2<20.0))
System.out.println(d1+d2);
else
System.out.println(d1*d2);
//4.交换两个变量值的代码实现
int b1=10;
int b2=24;
int temp=b1;
b1=b2;
b2=temp;
System.out.println("b1="+b1+",b2="+b2);
//练习结束**************************************************************************************
/*
如何从键盘获取不同类型的变量?-->使用scanner类
具体实现步骤:
1.导包:import java,utilScanner;
2.Scanner的实例化;
3.调用Scanner类的相关方法,以获取指定类型的变量。
注意:需要根据相应的方法输入指定类型的值,如果输入的类型和要求的类型不匹配,将会报异常InputMisNatchException
导致程序终止。
*/
//Scanner的实例化
Scanner scan=new Scanner(System.in);
//调用Scanner类的相关方法整数、字符串、浮点数、布尔型、字符型++++++++++++++++++++++++++++++++
System.out.println("请输入一个数字");
int num=scan.nextInt();
System.out.println(num);
System.out.println("请输入你的姓名:");
String name=scan.next();
System.out.println("你的名字是:"+name);
System.out.println("请输入你的芳龄:");
int ages=scan.nextInt();
System.out.println("你的名字是:"+name);
System.out.println("请输入你的体重:");
double weight=scan.nextDouble();
System.out.println("你的体重是:"+weight);
System.out.println("你是否相中我了:");
boolean isLove=scan.nextBoolean();
System.out.println(isLove);
//对于char型的获取:Scanner没有提供相关方法,只能获取一个字符串
System.out.println("请输入您的性别:");
String gender=scan.next();
char genderChar=gender.charAt(0);//获取gender字符串的第一个字符
System.out.println(genderChar);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
/*练习题1
岳小胖参加Java考试,他和父亲岳不群达成承诺:
如果:成绩为一百分,奖励一辆BMW;
成绩为(80,99],奖励一台iPhone xs max;
当成绩为[60,80],奖励一个iPad;
其他时,什么奖励也没有;
请从键盘上输入岳小胖的期末成绩,并加以判断
*/
Scanner scan=new Scanner(System.in);
System.out.println("请输入岳小胖的期末考试成绩:(0~100)");
int score=scan.nextInt();
//如下if-else结构不可改变顺序,否则编译能通过但是无法正确运行
if(score<60)
System.out.println("什么奖励也没有。");
else if(score<=80)
System.out.println("奖励一个iPad。");
else if(score<=99)
System.out.println("奖励一台iPhone xs max。");
else
System.out.println("奖励一台BMW");
//针对条件表达式,如果多个条件表达式之间是互斥关系(即没有交集),则哪个判断和执行语句声明在前面还是后面都无所谓,不影响判断结果;
//当多个条件判断语句之间有交集时,需要根据实际情况,考虑清楚将哪个结构放在前面。
/*练习题2
编写程序,由键盘输入三个整数分别存入变量num1、num2、num3
对它们进行排序(使用if-else),并且从小到大输出。
*/
System.out.println("请输入三个整数:");
int num1=scan.nextInt();
int num2=scan.nextInt();
int num3=scan.nextInt();
//我的想法是冒泡排序,借助中间变量temp实现num1、num2、num3之间的交换,使得num1、num2、num3变成从小到大的序列
int temp=num1;
if(num1<num2) {
temp=num2;
if(num2<num3) {
System.out.println(num1+","+num2+","+num3);
}else {
num2=num3;
num3=temp;
if(num1<num2)
System.out.println(num1+","+num2+","+num3);
else {
temp=num1;
num1=num2;
num2=temp;
System.out.println(num1+","+num2+","+num3);
}
}
}else {
num1=num2;
num2=temp;
if(num2<num3)
System.out.println(num1+","+num2+","+num3);
else {
temp=num2;
num2=num3;
num3=temp;
if(num1<num2)
System.out.println(num1+","+num2+","+num3);
else {
temp=num1;
num1=num2;
num2=temp;
System.out.println(num1+","+num2+","+num3);
}
}
}
//笔试题***************************************************************************
//1.对下列代码,若有输出,指出输出结果
int x=4;
int y=1;
if(x>2) {
if(y>2) //无大括号,以下一行为if内执行语句(笔试题喜欢删去大括号误导人)
System.out.println(x+y);
System.out.println("atguigu");//这一句是x>2的执行语句,
}else //就近配对原则
System.out.println("x is"+x);
//程序输出:atguigu
//2.如果改写成if(b=false)能编译通过吗?如果能,结果是什么?
boolean b=true;
if(b==false) //如果改成b=false,这句不执行
System.out.println("a");
else if(b) //b==false,所以这句也不执行
System.out.println("b");
else if(!b)
System.out.println("c"); //!b==true,执行,输出c
else
System.out.println("d");
/*
3.我家狗五岁了,5岁的狗相当于人类多大呢?其实,狗狗前两年每一年相当于人类的10.5年,之后每增加一年就增加四岁。
编写一个程序,获取用户输入的狗的年龄,通过此程序显示其相当于人类的年龄。
如果用户输入负数,请显示一个提示信息
*/
System.out.println("请输入你家狗狗的年龄:");
int dogAge=scan.nextInt();
if(dogAge<0)
System.out.println("你家狗狗还没出生呢");
else {
if(dogAge<=2) {
System.out.println("你家狗狗的年龄相当于人类的"+dogAge*10.5+"岁");
}else {
System.out.println("你家狗狗的年龄相当于人类的"+(2*10.5+4*(dogAge-2))+"岁");
}
}
/*
4.假设你想开发一个玩彩票的游戏,程序随机产生一个两位数的彩票,提示用户输入一个两位数,按照以下规则判断用户能否获奖:
1)如果用户输入匹配彩票的实际顺序,奖励10000美元;
2)如果用户输入数字匹配但是顺序不一样,奖励3000美元;
3)如果用户输入的一个数字满足顺序情况下匹配彩票的一个数,奖励1000美元;
4)如果用户输入一个数满足非顺序下匹配彩票的一个数,奖励600美元;
5)用户输入没有匹配任何一个数字,彩票作废。
*/
int lotteryTicket;
lotteryTicket=(int)(Math.random()*90+10);//random产生一个double类型的数,值域为[0.0,1.0)
int lotteryTicketG=lotteryTicket%10;
int lotteryTicketS=lotteryTicket/10;
System.out.println("请输入一个两位数:");
int userNum=scan.nextInt();
int userNumG=userNum%10;
int userNumS=userNum/10;
if(userNumG==lotteryTicketG && userNumS==lotteryTicketS) {
System.out.println("恭喜你,获得10000美元的奖励!");
}
else if(userNumG==lotteryTicketG || userNumS==lotteryTicketS) {
System.out.println("恭喜你,获得1000美元的奖励!");
}
else if(userNumG==lotteryTicketS && userNumS==lotteryTicketG) {
System.out.println("恭喜你,获得3000美元的奖励!");
}
else if(userNumG==lotteryTicketS || userNumS==lotteryTicketG) {
System.out.println("恭喜你,获得600美元的奖励!");
}else
System.out.println("很遗憾,你没有获奖!");
System.out.println("彩票数字是:"+lotteryTicket+",你的输入是:"+userNum);
/*
练习5:大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
高:180cm以上;富:财富一千万以上;帅:是。
如果三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则;“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
*/
System.out.println("请输入你的身高:cm");
double height=scan.nextDouble();
System.out.println("请输入你的财富总值:元");
int money=scan.nextInt();
System.out.println("你长得帅不帅:(帅->true,不帅->false)");
boolean face=scan.nextBoolean();
if(height>=180 && money>=10000000 && face==true ) {
System.out.println("我一定要嫁给他!!!");
}else if (height>=180 || money>=10000000 || face==true) {
System.out.println("嫁吧,比上不足,比下有余。");
}else
System.out.println("不嫁!");
//注意条件表达式直接的包含关系。这是if-else语句的顺序的关键
//练习结束*********************************************************************************