java if...else

本文通过具体案例介绍Java中Switch语句的应用,包括如何利用Switch语句处理不同条件下的响应及利用其特性计算特定月份的天数。此外,还提供了一个商场换购活动的例子,展示如何结合条件判断和用户输入来实现复杂的业务逻辑。
Scanner input = new Scanner(System.in);
System.out.println("请输入你的名次:");
int n = input.nextInt();
/*if(n == 1){
System.out.println("------");
}
else if(n == 2){
System.out.println("=======");
}
else if(n == 3){
System.out.println("********");
}else{
System.out.println("########");
}*/

//switch语句其实都可以通过if...else语句进行替代
//只是在做等值比较的时候用switch语句比较清晰

//1.注意break的问题
//如果不写break,会发生穿透
//2.在java 6 之前的版本switch()中的表达式只能是byte,short,int,char
//在java7以后的版本中,可以使用String类型了
//建议大家还是不要在switch表达式中使用String类型
/*switch(n){
case 1:
System.out.println("奖励美国夏令营一个月");
//break;
case 2:
System.out.println("奖励苹果手机");
//break;
case 3:
System.out.println("奖励小米手机");
//break;
default:
System.out.println("奖励认真学习一个月");
//break;
}*/

//通过switch 的穿透特性来得到每个月的天数
/*System.out.println("请输入年份:");
int year = input.nextInt();
System.out.println("请输入月份:");
int month = input.nextInt();

boolean flag = false;

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
flag = true;
}

int monthDay = 0; //记录天数

switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDay = 31;
break;
case 2:
if(flag){
monthDay = 29;
}else{
monthDay = 28;
}
break;
default:
monthDay = 30;
break;
}

System.out.println(year + "年," + month + "月,有" + monthDay + "天");
*/

//商场进行换购活动
//消费金额 >= 50 就可以参加活动
//满50  +2  换购一瓶可乐
//满100 +3 换购一瓶500ML可乐
//满100 +10 换购5KG面粉
//满200 +10 换购 名牌炒锅
//满200 +20 换购 欧莱雅爽肤水一瓶
//当然也可以不换购
//打印总花费与换购的商品

System.out.println("请输入消费金额:");
double money = input.nextDouble();
double extra = 0;
if(money >= 50){

System.out.println("参加换购活动:");
System.out.println("1.满50  +2  换购一瓶可乐");
System.out.println("2.满100  +3  换购一瓶500ML可乐");
System.out.println("3.满100  +10  换购5KG面粉");
System.out.println("4.满200  +10  换购名牌炒锅");
System.out.println("5.满200  +20  换购欧莱雅爽肤水");
System.out.println("0.不换购");
System.out.println("请选择:(0-5)");
int choice = input.nextInt();

String str = "";

switch(choice){
case 1:
if(money >= 50){
extra = 2;
str = "换购百事可乐一瓶";
}
break;
case 2:
if(money >= 100){
extra = 3;
str = "换购500ML百事可乐一瓶";
}
break;
case 3:
if(money >= 100){
extra = 10;
str = "换购5KG面粉";
}
break;
case 4:
if(money >= 200){
extra = 10;
str = "换购名牌炒锅";
}
break;
case 5:
if(money >= 200){
extra = 20;
str = "换购爽肤水";
}
break;
default:
extra = 0;
break;
}

//结账
double total = money + extra;
System.out.println("你本次消费的总金额是:" + total +","+ str);

}else{
System.out.println("你购买金额是:" + money);
}
<think> 我们首先明确用户的问题:用户询问Java中是否可以使用"if...if...else"这种结构。 根据用户提供的引用[1]:if语句至多有1个else语句,else语句在所有的else if语句之后。if语句可以有若干个else if语句,它们必须在else语句之前。 因此,在Java中,我们可以有多个if语句(即连续的if语句),也可以有if-else if-else结构。但是用户提到的"if...if...else"实际上可能有两种理解: 1. 两个连续的if语句,然后一个else语句:即 if(A){} if(B){} else{} 这种情况下,else只与它最近的if(即第二个if)配对,而不是与第一个if配对。所以这种写法是允许的,但可能不符合程序员的意图,因为第一个if和第二个if是独立的,而else只属于第二个if。 2. 一个if后面紧跟另一个if,然后再跟一个else:实际上,在Java中,else总是与它前面最近的尚未匹配的if配对。因此,如果用户写的是: if (condition1) { // 代码块1 } if (condition2) { // 代码块2 } else { // 代码块3 } 这里,else与第二个if配对。所以代码块3的执行条件是condition2为假。 另外,还有一种情况是嵌套的if-elseif (condition1) { if (condition2) { // 代码块1 } else { // 代码块2 } } 所以,回答用户的问题:Java中可以使用"if...if...else"这种结构,但是需要注意else的匹配规则:else总是与它最近的尚未匹配的if配对。 同时,用户提供的引用[3]和[4]是关于如何优化大量的if...else...结构的,说明在代码中如果出现大量的if-else,可以考虑使用策略模式、函数式编程等方法来优化。 下面我们按照要求进行回答: 1. 使用中文回答。 2. 回答中引用的段落末尾自然地添加引用标识。 3. 生成相关问题。 根据以上分析,我们给出回答: </think> ### Java中的`if...if...else`结构解析 在Java中,可以使用`if...if...else`结构,但**需要注意其执行逻辑**。这种结构实际上是多个独立`if`语句后跟一个`else`分支的组合。其行为规则如下: 1. **语法允许性** Java语法允许多个连续的`if`语句后跟`else`,例如: ```java if (条件A) { /* 代码块A */ } if (条件B) { /* 代码块B */ } else { /* 代码块C */ } ``` 这种写法完全合法[^1]。 2. **关键行为特性** - **`else`仅关联最近的`if`**:上述结构中,`else`只与第二个`if`(条件B)配对,与第一个`if`(条件A)无关[^1][^2]。 - **独立判断逻辑**:每个`if`都会独立进行条件判断,可能触发多个代码块。 - **执行流程**: - 若条件B为`true` → 执行代码块B - 若条件B为`false` → 执行代码块C - 无论条件A如何,都不会影响`else`的执行 3. **对比多分支结构** 若需要实现互斥分支(如条件A满足时不检查条件B),应使用`if-else if`结构: ```java if (条件A) { /* 执行A */ } else if (条件B) { /* 执行B */ } else { /* 执行C */ } ``` #### 典型应用场景 ```java int score = 85; // 独立检查每个条件(可能触发多个分支) if (score >= 90) System.out.println("优秀"); if (score >= 80) System.out.println("良好"); else System.out.println("需努力"); // 仅关联第二个if // 输出结果: // 良好(满足score>=80) // (不会输出"需努力",因为第二个if条件成立) ``` > **注意事项**:当需要互斥条件时(如成绩分段),优先选用`if-else if-else`结构。连续`if`更适合独立条件检查的场景[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值