目录
在生活中,很多事情的过程大致可以分为三类,顺序、分支、循环。
一、顺序结构
这里我们不再过多赘述,顺序结构比较简单,按照代码书写的顺序一行一行执行。
二、分支结构
2.1. if语句
(1)语法规则
语法规则1:
if(布尔表达式){
语句;
}
当布尔表达式结果为true,就会执行if后面的语句,否则不执行。
语法规则2:
if(布尔表达式){
语句1;
}else{
语句2;
}
当布尔表达式结果为true,就会执行if后面的语句,否则执行else后面的语句。例子如下。
int score=60;
if(score>=60){
System.out.println("成绩合格");
}else{
System.out.println("成绩不合格");
}
语法格式3:表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3
if(布尔表达式1){
语句1;
}else if(布尔表达式2){
语句2;
}else{
语句3;
}
if(score >= 90){
System.out.println("优秀");
}else if(score >= 80 && score < 90){
System.out.println("良好");
}else if(score >= 70 && score < 80){
System.out.println("中等");
}else if(score >= 60 && score < 70){
System.out.println("及格");
}else if(score >= 0 && score < 60){
System.out.println("不及格");
}else{
System.out.println("错误数据");
}
代码风格:
int a=1;
if(a==1){
语句1;
}else{
语句2;
}
代码风格上,推荐使用以上风格。把{与if或else放在同一行。
(2)分号问题
int a=1;
if(a==2);{
System.out.println("heloo");
}
上述代码当执行到分号时就结束了,不管任何条件下都能执行。
(3)悬空else问题
int x = 10;
int y = 10;
if (x == 10)
if (y == 10)
System.out.println("aaa");
else
System.out.println("bbb");
if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配。但是实际开发中我们 不建议 这么写, 最好加上大括号。后期工作时,领导会看我们写的代码。如果看到这种风格的代码,会被叫去训话。
2.2. switch语句
switch(表达式){
case 常量值1:{
语句1;
[break;]
}
case 常量值2:{
语句2;
[break;]
}
default:{
内容都不满足时执行语句;
[break;]
}
}
执行流程: 1. 先计算表达式的值 2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束 3. 当表达式的值没有与所列项匹配时,执行default。比如我们可以根据day的值打印出星期几。
Scanner sca = new Scanner(System.in);
int day= sca.nextInt();
switch(day){
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("输入有误");
break;
注意:多个case后的常量值不可以重复。switch的括号内只能是以下类型的表达式: 基本类型:byte、char、short、int,注意不能是long类型、引用类型:String常量串、枚举类型 。break不能遗漏,否则会失去多分支效果。switch不能表达太复杂的问题。
三、循环结构
3.1. while循环
语法规则:
while(循环条件){
循环语句;
}
循环条件为true,则就会执行循环语句,否则循环结束。
打印1——10,代码如下:
int a =1;//变量的初始化
while(a<=10){
System.out.println(a);
a++;//趋近与循环结束的条件
}
计算1——100的和,代码如下:
int n = 1;
int result = 0;
while (n <= 100) {
result += n;
n++;
}
System.out.println(num);
计算5的阶乘,代码如下:
int n = 1;
int result = 1;
while (n <= 5) {
result *= n;
n++;
}
System.out.println(num);
if和while的相似点:while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句, 建议还是加上 { };while 后面的 { 建议和 while 写在同一行;和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行。
3.2. for循环
语法规则:
for(表达式1;布尔表达式2;表达式3){
表达式4;
}
表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次;
表达式2: 循环条件,满则循环继续,否则循环结束;
表达式3: 循环变量更新方式。
执行过程:1234→234→234→234……如果2为false,则循环就会停止。
如果布尔表达式2不写,则默认为真, 比如下面这段代码。
for (int a = 0; ; a++) {
System.out.println(a);
}
如果运行,则代码就会死循环。
for循环还有一个小技巧。当我们在IDEA上敲入for时,就会显示出fori,此时默认变量为i,并构成了一个框架只需要修改第一个i,后面两个都会自动修改。
用for循环打印1——10
for(int a=1;a<=10;a++){
System.out.println(a);
}
用for循环计算1——100的值
int sum=0;
for(int i=0;i<=100;i++){
sum+=i;
}
System.out.println(sum);
计算5的阶乘
int result = 1;
for (int i = 1; i <= 5; i++) {
result *= i;
}
System.out.println("result = " + result)
注意:for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { } ;for 后面的 { 建议和 while 写在同一行;for 后面不要多写 分号, 否则可能导致循环不能正确执行;和while循环一样,结束单趟循环用continue,结束整个循环用break(后面会讲到continue,break)。
3.3. do while循环
语法结构:
do{
循环语句;
}while(循环条件);
用do while循环打印1——10
int num =1;
do{
System.out.println(num);
}while(num<=10);
do while循环一定不要忘记最后的分号。
3.4. break
break让循环终止。 例如找到 100 - 200 中第一个 3 的倍数,代码如下
for(int a=100;a<=200;a++){
if(a%3==0){
System.out.println(a);
break;
}
}
//执行结果:102
3.5. continue
continue 的功能是跳过这次循环, 立即进入下次循环。 比如下面这段代码,利用continue打印100——200之间能被3整除的数字
for(int a=100;a<=200;a++){
if(a%3!=0){
a++;
continue;
}
System.out.println(a);
a++;
四、IDEA的调试
int i=1;
while(i<=10){
if(i==3){
break;
}
System.out.println(i);
i++;
}
当鼠标左击一下时,所在的一行就会出现一个断点,此时点击调试(英文为debug)。
蓝色的折箭头为逐语句,蓝色的箭头为逐过程,也就是进入函数内部。左侧的红色方框为停止调试,绿色的三角形是跳到下一个断点。左边的框为方法或函数的栈,右边的框显示变量的值。