基本if/if-else条件(选择)结构
当代码块只有一个语句时,可以省略大括号
//if 条件结构
if(条件1)
代码块;
//if-else 选择结构
if(条件1)
代码块1;
else
代码块2;
多重if条件结构
在解决需要判断的条件是连续区间时有很大优势
if(条件1)
代码块1;
else if(条件2)
代码块2;
else if(条件3)
代码块3;
else
代码块4;
嵌套if条件结构
在if里再嵌入if选择结构
if(条件1){
if(条件2){
代码块1;
}else {
代码块2;
}
}else
代码块3;
例如,如下代码:
/*嵌套if条件结构的使用*/
package day01;
import java.util.Scanner;
public class Text01{
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
System.out.println("请输入成绩:");
int in = sca.nextInt();
System.out.println("请输入性别:");
String st = sca.next();
//.equals String方法.判断两个字符串(string)的内容是否相等,若相同则返回true 否则为false
if(in>10) {
if(st.equals("男")){
System.out.println("进入男子组");
}else if(st.equals("女"))
System.out.println("进入女子组");
}else
System.out.println("淘汰");
}
}
Switch条件选择结构
Switch 语句由一个控制表达式和多个case标签组成;且控制表达式的数据类型只能使byte,short,char,int 以及 String 类型和枚举类型。
Switch 语句往往需要在 case 标签后紧跟一个代码块,case 标签作为代码块的标识。
switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
case 常量3:
代码块3;
break;
default:
代码块4;
}
Switch 语句的语法格式解释:
这种分支语句的执行是先对表达式求值,然后依次匹配 case 后的常量,遇到相同的的匹配值则执行对应的代码块。如果都不匹配,则执行 default 后的代码块。
注意:Swicth 语句中的 break 非常重要,如果注释掉了 break,则会应引入一个陷阱。
陷阱:Switch 语句先求出表达式的值,然后和 case 标签后的值进行比较,一旦遇到相等的值,程序就会开始执行当前这个代码块和后面标签的代码,不用再判断后面case,default 标签的条件是否匹配,除非遇到 break.
【案例】出租车计费程序设计分析
程序中需要用到当前系统时间的小时数。可以用以下方法得到小时数(数据类型为int):
Calendar.getInstance( ).get(Calendar.HOUR_OF_DAY)
Calendar 是 JDK 提供的类,代表抽象的日历类型,它定义在 java.util 程序包下,使用时先导入。
其中:
get(Calendar.HOUR_OF_DAY) 获得当天的小时数
get(Calendar.DAY_OF_YEAR) 获得当年的第几天
get(Calendar.DAY_OF_MONTH) 获得这个月的第几天
get(Calendar.DAY_OF_WEEK) 获得这个星期的第几天
Calendar 的使用方法:
Calender cal = Calender.getInstance(); //获取当前系统的日历
同时,还有 set 设置时间。具体使用方法请查看 java.util
package day01;
import java.util.Calendar;
import java.util.Scanner;
public class TaxiCharge {
public static void main(String[] args) {
double startPriceInDay = 10.00;//白天起价
double startPriceInNight = 12.00;//夜间起价
double perPriceInDay = 2.0;//白天每千米价格
double perPriceInNight = 2.3;//晚上每千米价格
double basePrice = 0.0;//基本里程费
double emptyBackPrice = 0.0;//返回空驶价格
//获取当前系统时间的小时数
int nowTime = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
Scanner sca = new Scanner(System.in);
System.out.println("请输入行驶千米数:");
//输入提示行驶千米数
double len = sca.nextDouble();
System.out.println("请输入等待时间(单位:s):");
//输入提示等待秒数
int wait = sca.nextInt();
//嵌套if选择结构
if(nowTime>7 && nowTime<23) { //白天
basePrice+=startPriceInDay;
if(len>3) {
basePrice+=(int)(len-3+1)*perPriceInDay;
}
}else { //夜间
basePrice+=startPriceInNight;
if(len>3) {
basePrice+=(int)(len-3+1)*perPriceInNight;
}
}
if(len>15) {
emptyBackPrice+=(int)(len-15.0+1)*1;
}
//等待价
double waitPrice =+ wait/60*2;
//总价格
double totalPrice = (basePrice+emptyBackPrice+waitPrice);//总价
System.out.println("出租车应收款如下:");
System.out.println("基本里程费:"+basePrice);
System.out.println("空驶费:"+emptyBackPrice);
System.out.println("等待费:"+waitPrice);
System.out.println("总计:"+totalPrice);
}
}
+= 和 =+ 的区别
a += b : a=a+b
a = +b : a=b //赋值