第二章(Ⅲ)选择与循环
关于流程图的一点补充:
一、选择结构
1、if语句
语法格式:
if(判断条件){
【代码块】;
}
三种使用形式:
if(); // 省略了大括号和代码块
if()
~~; // 省略了大括号
if(){
~~;
~~;
} // 普通格式【可读性和可维护性都比较好】
2、if-else结构
语法格式:
if(判断条件){
【代码块1】;
}else{
【代码块2】;
}
3、多重if-else结构
语法格式:
if(判断条件){
【代码块1】;
}else if (判断条件){
【代码块2】;
}·······
else if(判断条件){
【代码块 n】;
}else {
【代码块n+1】;
}
4、if-else条件语句的嵌套
举例:计算航空行李托运费
public class Shippingrates {
public static void main(String[] args) {
double weight,money;
String strShow = "该乘客为:";
Scanner input = new Scanner(System.in);
System.out.println("请输入行李的重量(单位:kg):");
weight = input.nextDouble();
if(weight<40) {
money = 0;
}else {
System.out.println("是国内乘客吗(1:是,其他值:不是)?");
int iInner = input.nextInt();
System.out.println("是头等舱吗(1:是,其他值:不是)?");
int iHead = input.nextInt();
System.out.println("是残疾人吗(1:是,其他值:不是)?");
int iDefomity = input.nextInt();
if(iInner==1) {
strShow += "来自国内的一位乘坐";
if(iHead==1) {
strShow += "头等舱";
if (iDefomity==1)
strShow += "的残疾乘客";
money = (weight - 40)*2.5;
}else {
strShow += "其它舱";
if(iDefomity==1) {
strShow += "的残疾乘客";
money =(weight - 40)*3;
}else {
strShow += "的正常乘客";
money =(weight - 40)*5;
}
}
}else{
strShow += "来自国外的一位乘坐";
if(iHead==1) {
strShow += "头等舱";
if(iDefomity==1) {
strShow += "的残疾乘客";
money = (weight - 40)*6;
}else {
strShow += "的正常乘客";
money = (weight - 40)*6;
}
}else {
strShow += "其他舱";
if(iDefomity==1) {
strShow += "的残疾乘客";
money = (weight - 40)*5;
}else {
strShow += "的正常乘客";
money = (weight - 40)*10;
}
}
}
input.close();
System.out.println(strShow);
System.out.println("行李重:"+weight+"千克,所需要的运费为:"+money+"元。");
}
}
}
小贴士:
若因代码太长而迷茫的话,可以在闭合花括号( } )的前面双击,则你会看到此花括号所包裹的代码块,有助于厘清头绪。(在eclipse中可进行此操作,其他我并没有尝试)
5、switch-case结构
语法格式:
switch(表达式){
case 常量表达式1:代码块1;
break;
case 常量表达式2:代码块2;
break;
``
case 常量表达式n:代码块n;
break;
default : 代码块n+1;
break;
}
注:case 后面的值只能是整型或字符型的常量或常量表达式
switch()中表达式的值的要求同case.
java 1.6(包括)以前,只是支持能转换成int类型的基本类型:byte ,short,char,int
1.7加入的新特性可以支持String类型的数据。(此有待考证)
二、循环结构
1、while 与 do while循环
语法格式:
while(判断条件){
【代码块】;
}
语法格式:
do
{
【代码块】;
}while(判断条件)
两者最大的区别:do while 是先执行一次再判断是否继续往下执行;while是直接进行判断,符合执行,不符合就不执行。
2、for 循环
for(判断条件1;判断条件2;判断条件3)
{
【代码块】;
}
3、break和continue
break是直接跳出循环,continue是跳出本次循环,去进行判断,继续执行下一次循环。