在这一节,学习程序流程控制,具体包括判断结构、选择结构、循环结构。
1、判断结构(if、if-else)
三元运算符和if-else的区别
三元运算符,是一个运算符,所以运行必须有结果 而if-else语句,只控制流程,所以不一定有结果 某些情况下,可以把if-else改写为三元运算符的形式 前提是要保证if-else执行完有具体的结果出现
例子1:输入对应的数字,选择输出对应的结果
1 package day01; 2 3 import java.util.Scanner; 4 5 public class translate { 6 7 public static void main(String[] args) { 8 int num = 0; 9 // TODO Auto-generated method stub 10 System.out.println("请输入1-5当中的数字:"); 11 Scanner sc = new Scanner(System.in); 12 int i=sc.nextInt(); 13 if(i == 1) { 14 System.out.println("该用户输入"+i+"对应的单词是Apple"); 15 }else if(i == 2) { 16 System.out.println("该用户输入"+i+"对应的单词是banana"); 17 }else if(i == 3) { 18 System.out.println("该用户输入"+i+"对应的单词是pear"); 19 }else if(i == 4) { 20 System.out.println("该用户输入"+i+"对应的单词是peach"); 21 }else if(i == 5) { 22 System.out.println("该用户输入"+i+"对应的单词是orange"); 23 } 24 25 } 26 27 }
例子2:进行if的嵌套
1 package homework; 2 3 import java.util.Scanner; 4 5 public class exer8 { 6 public static void main(String[] args) { 7 Scanner sc = new Scanner(System.in); 8 System.out.println("请输入是否是会员: 是(y)/否(n)"); 9 String i = sc.next(); 10 System.out.println("测试"); 11 if(i.equals("y")) { 12 System.out.println("请输入购物金额:"); 13 float money = sc.nextFloat(); 14 if(money>200) { 15 System.out.println("实际支付:" + (float)(money*(0.75))); 16 }else { 17 System.out.println("实际支付:" + (float)(money*(0.8))); 18 } 19 }else if(i.equals("n")){ 20 System.out.println("请输入购物金额:"); 21 float money = sc.nextFloat(); 22 System.out.println("实际支付:" + (float)(money*(0.9))); 23 } 24 25 26 } 27 28 }
2、选择结构(switch)
switch语句特点: a,switch语句选择的类型在jdk1.6只支持四种:byte,short,int , char。jdk1.7以后支持String类型的。 b,case之间与default没有顺序。先执行第一个case,没有匹配的case最后再执行default。 c,结束switch语句的两种情况:遇到break,执行到switch语句结束。 d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
例子1:实现计算器
1 package day02; 2 3 import java.util.Scanner; 4 5 public class switch01 { 6 7 public static void main(String[] args) { 8 9 // 计算器 10 int result = 0; 11 System.out.println("输入第一个数:"); 12 Scanner sc = new Scanner(System.in); 13 int num1=sc.nextInt(); 14 15 System.out.println("选择加减乘除:(1加 2减 3乘 4除)"); 16 int choice=sc.nextInt(); 17 switch(choice) { 18 case 1: 19 System.out.println("输入第二个数:"); 20 int num2=sc.nextInt(); 21 result = num1+num2; 22 System.out.println("得到的结果为:"+result); 23 break; 24 case 2: 25 System.out.println("输入第二个数:"); 26 int num3=sc.nextInt(); 27 result = num1-num3; 28 System.out.println("得到的结果为:"+result); 29 break; 30 case 3: 31 System.out.println("输入第二个数:"); 32 int num4=sc.nextInt(); 33 result = num1*num4; 34 System.out.println("得到的结果为:"+result); 35 break; 36 case 4: 37 System.out.println("输入第二个数:"); 38 int num5=sc.nextInt(); 39 result = num1/num5; 40 System.out.println("得到的结果为:%s"+result); 41 break; 42 default:break; 43 } 44 45 46 } 47 48 }
例子2:实现星期的翻译
1 package day02; 2 3 import java.util.Scanner; 4 5 public class week { 6 7 public static void main(String[] args) { 8 int num = 0; 9 // TODO Auto-generated method stub 10 System.out.println("请输入1-7当中的数字:"); 11 Scanner sc = new Scanner(System.in); 12 int i=sc.nextInt(); 13 switch(i) { 14 case 1: 15 System.out.println("今天是星期一"); 16 break; 17 case 2: 18 System.out.println("今天是星期二"); 19 break; 20 case 3: 21 System.out.println("今天是星期三"); 22 break; 23 case 4: 24 System.out.println("今天是星期四"); 25 break; 26 case 5: 27 System.out.println("今天是星期五"); 28 break; 29 case 6: 30 System.out.println("今天是星期六"); 31 break; 32 case 7: 33 System.out.println("今天是星期七"); 34 break; 35 default:break; 36 37 } 38 39 } 40 41 }
3、循环结构(while,do-while,for)
do while特点是条件无论是否满足, 循环体至少被执行一次。
定义循环要注意 1:定义循环的条件 2:控制循环执行的次数 while里面的表达式可以用true,这样的话这个循环就是一个死循环了,会一直执行。
格式: for(初始化表达式;循环条件表达式;循环后的操作表达式) {
执行语句;
(循环体)
}
注:
a:for里面的几个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复这个过程,直到条件不满足为止。
b:while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
c:最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
例子1:for循环 实现99乘法表
1 package day02; 2 3 public class jiujiu { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 int result; 8 for(int i=1;i<10;i++) { 9 for(int j=1;j<=i;j++) { 10 result = i*j; 11 System.out.print(j+"*"+i+"="+result+"\t"); 12 } 13 System.out.println(); 14 } 15 16 } 17 18 }
例子2: while循环 实现判断多少年后,学员达到1000000
1 package homework; 2 3 public class exer2 { 4 5 public static void main(String[] args) { 6 int year = 2012; 7 double student = 250000; 8 while(student <= 1000000) { 9 student = student * (1 + 0.25); 10 year++; 11 } 12 System.out.println("到"+ year +"年培训学员人数将达到1000000"); 13 14 } 15 16 }
4、其他控制流程语句
break(跳出), continue(继续)
break语句:应用范围:选择结构和循环结构。 跳出当前循环
continue语句:应用于循环结构。 结束本次循环,继续下次循环
注:
a:这两个语句离开应用范围,存在是没有意义的。
b:这两个语句单独存在下面都不可以有语句,因为执行不到。
c:continue语句是结束本次循环继续下次循环。
d:花括号的出现,可以让这两个语句作用于指定的范围。