流程控制语句
1.Java中的流程控制语句
三类
顺序结构语句:从进入到程序的入口之后,代码从上而下依次加载
- 如: 从main进来之后,直接去输出,依次输出...
选择结构语句:
- if语句-----开发中使用比较多的,尤其格式2:if...else...
- switch语句
循环结构语句:
- for
- while
- do-while
2.选择结构语句之if
格式一:
- 判断表达式是否成立,如果成立,则执行语句,否则不执行;
注意事项:
- if()后面不能带分号
有分号的地方就不能{,有{的地方,不能有分号
if(表达式){ 语句; }
//导包
import java.util.Scanner ;
public class IfDemo1{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示并录入数据
System.out.println("请输入一个数据num:");
int num = sc.nextInt();
//判断
if(num >=15){
System.out.println("num大于等于15");
}
System.out.println("over");
}
}
格式二:
执行流程:
- 首先判断表达式是否成立,如果成立,则执行语句1...
如果不成立,执行语句2...
if(表达式){ 语句1 ...; }else{ 语句2...; }
//导包
import java.util.Scanner;
public class IfDemo2{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示并录入数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
//if...else... 流程语句
//方式1:直接使用变量接收 (推荐第一种)
//定义一个变量
int max;
if(a > b){
//将a的值赋值给max
max = a;
//System.out.println(a+"是最大值");
}else {
//将b的值赋值给max
max = b ;
//System.out.println(b+"是最大值");
}
System.out.println("max:" + max);
System.out.println("----------------------------------");
//方式2:直接输出
if(a > b){
System.out.println(a + "是最大值");
}else {
System.out.println(b + "是最大值");
}
}
}
格式三:
执行流程:
- 先判断表达式1是否成立,成立,执行语句1
如果不成立,继续判断表达式2是否成立,成立,则执行语句2,,,
...
如果上面的表达式都不成立,执行else中的语句n..
if(表达式1){ 语句1 ...; }else if(表达式2){ 语句2...; ... }else{ 语句n...; }
//导包
import java.util.Scanner ;
class IfDemo4{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示,录入数据
System.out.println("请输入学生的成绩:") ;
int socre = sc.nextInt() ;
/*
90-100 优秀
80-90 较好
70-80 良好
60-70 及格
60以下 不及格
*/
//if格式3
/*
if(socre>=90 && socre<=100){
System.out.println("优秀") ;
}else if(socre>=80 && socre<90){
System.out.println("较好") ;
}else if(socre>=70 && socre<80){
System.out.println("良好") ;
}else if(socre>=60 && socre<70){
System.out.println("及格") ;
}else{
System.out.println("不及格") ;
}
*/
//学习任何计算机语言:程序---最终给客户去用的,考虑开发完成之后,自测
//测试 :正确的数据 ,错误数据,边界数据
//优化:最终版:加入一些非法数据的提示
if(socre>100 || socre<0){
System.out.println("您输入的数据不合法") ;
}else if(socre>=90 && socre<=100){
System.out.println("优秀") ;
}else if(socre>=80 && socre<90){
System.out.println("较好") ;
}else if(socre>=70 && socre<80){
System.out.println("良好") ;
}else if(socre>=60 && socre<70){
System.out.println("及格") ;
}else{
System.out.println("不及格") ;
}
//jvm:java虚拟机 校验你的语法的时候,需要校验语法的整个结构,考虑如果if的里面都不成立,这个程序没有结束;
//就会出现问题;
}
}
if...else...嵌套
格式
if(表达式1){ if(表达式2){ 语句1; }else{ 语句2; } }eles{ if(表达式3){ 语句3...; }else{ 语句4...; } }
import java.util.Scanner ; class IfTest{ public static void main(String[] args){ //创建键盘录入对象 Scanner sc = new Scanner(System.in) ; //提示并录入数据 System.out.println("请输入第一个数据:") ; int num1 = sc.nextInt() ; System.out.println("请输入第二个数据:") ; int num2 = sc.nextInt() ; System.out.println("请输入第三个数据:") ; int num3 = sc.nextInt() ; int max ; if(num1>num2){ //语句----if...else if(num1>num3){ max = num1 ; //num1大 }else{ max = num3 ; //num3大 } }else{ //num2比num1大 if(num2>num3){ //将num2赋值max max = num2 ; }else{ //将num3赋值给max max = num3 ; } } System.out.println("三个数据的最大值是:"+max) ; } }
3.选择结构语句之switch
格式
switch(表达式或者某个变量值){ case 值1: 语句1; break ; case 值2: 语句2: break ; ... default: 语句n; break ; }
/*需求: 键盘录入一个值,判断星期 1,星期一 2,星期二 3,星期三, 4,星期四 5,星期五 6,星期六 7,星期日 */ import java.util.Scanner; public class SwicthDemo { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in) ; //提示并录入数据 System.out.println("请输入一个星期(1-7的数据): ") ; int week = sc.nextInt() ; switch (week){ case 1: System.out.println("星期一") ; break ; case 2: System.out.println("星期二") ; break ; case 3: System.out.println("星期三") ; break ; case 4: System.out.println("星期四") ; break ; case 5: System.out.println("星期五") ; break ; case 6: System.out.println("星期六") ; break ; case 7: System.out.println("星期日") ; break ; default : System.out.println("非法数据") ; break ; } } }
执行流程
switch接收结果
- 接收的结果和case后面的值1进行对比,成立,执行语句1,break 结束语句;
- 值1和switch接收的结果不匹配,和值2进行比较,成立,执行语句2, break,结束语句;
- ...
- 如果上面case都不匹配,执行default语句,语句n,break ,结束...
switch后面的跟的值的数据类型可以有哪些类型?
- 基本数据类型:byte,short,int,char
- jdk5以后可以是枚举类型 enum:引用类型
- jdk7以后可以是String字符串 :引用类型
switch语句中的注意事项也是 (考点)
关于switch中的case语句后面只能常量,不能是变量 (体现Java是一种强类型语言)
* 前端的javascript(弱类型语言):它里面的swtich的case是可以是变量,可以是个常量
在书写switch语句的标准结构,不忘了break,如果语句中忘了书写break,会出现一个现象:case穿透!
public class SwitchTest { public static void main(String[] args) { // case穿透 int a = 3 ; int b = 4 ; switch (a){//3 default: b++ ; break; case 2: b ++; case 3://匹配成功 b++ ; //4 ++ = 5 case 4 : b++ ; // 5++ = 6 } //b的值是多少; System.out.println("b:"+b);
* 在有的需求里面利用 case穿透 来完成一些需求; ```java import java.util.Scanner; public class SwitchTest2 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in) ; //提示并录入数据 System.out.println("请您输入一个月份的值:") ; int month = sc.nextInt() ; //利用case穿透:灵活运用 switch (month){ case 3: case 4: case 5: System.out.println("春季") ; break ; case 6: case 7: case 8: System.out.println("夏季"); break ; case 9: case 10: case 11: System.out.println("秋季"); break ; case 12: case 1: case 2: System.out.println("冬季"); break ; default: System.out.println("非法数据!!") ; break ; } } } ```
关于switch语句的结束条件
- 要么遇见break结束
- 程序默认执行到末尾
关于default语句可以在switch语句中的任何位置,不影响语句的执行流程;
- 不管在任何位置,只要case语句都不匹配,执行default;
- 如果default语句在语句中,break不要省略
- 如果default语句的末尾,break可以省略(不建议);
/*
使用switch语句,完成模拟单项选择题操作
*/
import java.util.Scanner;
public class Demo9 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("电视剧《仙剑奇侠传》中,李逍遥的扮演者是谁?");
System.out.println("请选择以下选项:" + "\n" + "[A.胡歌]" + "\t" + "[B.彭于晏]" + "\t" + "[C.袁弘]" + "\t" + "[D.霍建华]");
String choice = scanner.next();//使用字符串
switch (choice){
case "A":
System.out.println("恭喜你,回答正确!");
break;
case "B":
System.out.println("对不起,回答错误!");
break;
case "C":
System.out.println("对不起,回答错误!");
break;
case "D":
System.out.println("对不起,回答错误!");
break;
default:
System.out.println("没有该选项 ");
break ;
}
System.out.println("-------------------------------------------------------");
int choice = sc.nextInt() ;
//将int类型---转换成char
char choiceNum = (char) choice ;
System.out.println(choiceNum);
switch (choiceNum){
case 'A': //65
System.out.println("√");
break ;
case 'B': //66
System.out.println("×");
break ;
case 'C': //67
System.out.println("×");
break ;
case 'D': //68
System.out.println("×");
break ;
default:
System.out.println("没有该选项 ");
break ;
}
}
}