一、流程控制语句
1、分支语句
1)if else
语法:(写法1)
if(条件1){ //写一次
满足条件1执行在代码
}else if(条件2){ //写0或n次
不满足条件1,满足条件2执行在代码
}else if(条件3){ //写0或n次
不满足条件1和2,满足条件3执行在代码
}else{ //写0或1次
不满足以上所有条件执行在代码
}
练习1:写一个程序,输入整数,判断是正数、负数还是0
语法(写法2)条件之间可以有交集
if(条件1){ //写一次
满足条件1执行在代码
}
if(条件2){ //写0或n次
满足条件2执行在代码
}
if(条件3){ //写0或n次
满足条件3执行在代码
}
练习2:员工出差交通工具在选择,输入员工 的薪水,
>=10000,飞机
8000·9999 高铁
6000··7999 汽车
5000··6999 自行车
4000··5999 步行
3000··4999 家里蹲
低于3000 显示无此工资标准
思路:先判断<3000,打印提示:无此工资标准,立即结束main方法:return;返回
语法(写法3)
如果分支体中只有一行代码,{}可以省略
if(a > 0){ //if默认只管一行
System.out.println("是整数“);
}else{ //默认只管一行
System.out.println("不是整数”);
}
语法(写法4)if else可以嵌套使用
if(条件1){
满足条件1执行在语句
if(条件2){
既满足条件1执行在语句,也满足条件2执行在语句;
}else{
满足条件1执行在语句,不满足条件2执行在语句;
}
}else{
不满足条件1执行在语句 ;
}
笔试题:
int a = 3,b=5,c=8,d=0;
if(a>b)
if(c>b)
d=a;
else
d=b;
system.out.println(d);
2)switch case
switch 开关 根据变量在值选择某个分支
语法:
switch(变量){ //支持byte short int char enum
case 值1:
满足值1执行在语句;
case 值2:
满足值2执行在语句;
case 值3:
满足值3执行在语句;
default:
不满足以上所有值默认执行在语句;
}
练习:成绩评级分析器
输入一个五分制成绩,显示出级别:
5 优
4 良
3 及格
2、1、0 不及格
注意:
1)switch中在变量支持:
jdk7支持String类型
String str = " ";
switch(str){
case "java":.....break;
case "QTP":.....break;
..
}
2)每个分支结尾必须由break语句(结束分支)
练习2:
1、提示并输入分值score;
2、判断分值的有效性;
3、判断级别;
4、输出结果。
package review1.homework;
import java.util.Scanner;
public class TestGrade{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println(“请输入分值:”);
int score = sc.nextInt();
if(score<0 ||(短路或) score>100 ){
System.out.println("无效的分值:" + score);
return;
}
int num = score/10;
char grade =‘@’;//grade=‘\u0000’字符值
switch(num){
case 10;
case 9;
grade = 'A'; break;
case 8;
grade = 'B'; break;
case 7;
grade = 'C'; break;
case 6;
grade = 'D'; break;
default: //一定是0、1、2、3、4、5
grade = 'E';
}
System.out.println("级别:" + grade);
}
}
注意:局部变量(方法中定义的变量)未经初始化无法直接使用;例如:grade是char类型,没值无法输出。
练习3:
package review1.homework;
import java.util.Scanner;
public class TestDay{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println(“请输入年份”);
int day = sc.nesxInt();
System.out.println(“请输入月份”);
int month = sc.nextInt();
if(month<1 || month >12){
System.out.println(“无效的月份:” + month)
return;
}
int day = -1; //初始化,无效的值
Switch(month){
case 1;
case 3;
case 5;
case 7;
case 8;
case 10;
case 12;
day = 31; break;
case4;
case 6;
case 9;
case 11;
day = 33; break;
default: //一定是2月份,根据year判断;
if(TestLeapYear.inLeapYear(year)){
day = 29;
}else{
day =28;
}
}
System.out.println("day");
}
}
2、循环语句
1)for循环
快捷键
alt + / 快速提示生成代码
ctrl + d 删除光标所在、选定的行
ctrl + / 添加、去除单行注释
Ctrl + Shift + / 添加多行注释
Ctrl + shift + \ 解除多行注释
/**+回车键:类/方法的注释
注意:
1)jdk支持String类型
2)每个分支的结尾必须由break语句,如果没有break,在满足条件后,会继续执行后续所有分支,知道遇到break为止。
3)
比较:
break对分支、循环的控制;
return对方法的控制,提前返回方法调用
需求:打印1~5
system.out.println(1);
system.out.println(2);
system.out.println(3);
system.out.println(4);
system.out.println(5);
二、循环语句
循环:反复执行同样或类似的代码
循环要素:初始值、循环条件、步进语句、循环体;
1、for循环
语法:
for(初始化语句1;循环条件2;步进语句3){
//循环体
满足循环条件执行的语句4;
}
。。。
执行步骤:
初始化语句1;
循环条件2;
满足循环条件执行的语句4;
步进语句3
循环条件2;
满足循环条件执行的语句4;
步进语句3
循环条件2;
false;
结束for循环;
package day06;
//测试for循环核心语法
public class TestFor{
public static void main(String[] arg){
/* //语法一:
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
**/
/* //语法二:
for(int i=1;i<= 5;i++){ //i的作用域在for循环体中
System.out.println(i);
}
** /
/* //语法三:
int i = 1; //i的作用域main都 可见
for(;i <= 5;i++){
System.out.println("i=" + i);
}
System.out.println("i=" + i);
**/
int i = 1;
for ( ; ; ){
System.out.println("i=" + i);
} //无法到达的代码,无线循环即死循环;
}
}
//语法二:
for(i=1;i<= 5;i++){
System.out.println(i);
i=1;满足i <=5,i++,打印i=1;
满足i <=5,i++,打印i=2;
满足i <=5,i++,打印i=3;
满足i <=5,i++,打印i=4;
满足i <=5,i++,打印i=5;
i=6;不满足i <=5,结束语句
i不能被解析到;
2)while循环:执行0次或n次
语法:
while(循环条件){
//循环体
满足循环条件的执行语句
}
while(true){
if(退出条件){
break;
}
}
3)do while 循环
特点:至少执行一次的循环;
语法
do{
会先执行一次,满足循环条件,会循环执行
}while(循环条件)
练习:循环提示输入整数并输出,直到输入-1结束。
注意:
1)至少执行一次;
2)必须分号结尾;
3)while();中变量必须在外声明
循环嵌套:
循环、分支都可以互相嵌套;
但方法中不能嵌套定义,方法中不能再定义方法,可以调用其他方法;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
System.out.println(j);
}
}
3、控制语句
1)break 打断
1)用于switch case,表示结束分支语句
2)结束循环,就近原则;
3)break循环标号;结束标号指定是循环;
用途:用于从里层循环直接结束外层循环;
2)continue 继续
1)只能用于循环,结束本次循环,继续下一次循环就近原则;
2)continue循环标号;结束标号指定的本次循环,继续下一次循环;