百知教育学习- 胡鑫喆讲师-第三章——流程控制
一、if条件分支结构
1.选择结构与分支结构
package day3;
public class TestIf{
public static void main(String[] args){
if(布尔表达式){代码块 }
}
}
2.多重if选择结构
语法:
if(布尔表达式1){
//代码块1
}else if(布尔表达式2){
//代码块2
}
else{
//代码块3
}
3.嵌套if选择结构
语法:
if(外层表达式){
if(内层表达式1){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块2
}
二、switch_case结构
语法:
switch(变量|表达式){
case 值1:
逻辑代码1;
case 值2:
逻辑代码2;
case 值n:
逻辑代码n;
default:
未满足的逻辑代码;
}
- 可判断类型:
byte、short、int 、char、String(JDK7+) - 执行流程:
- 如果变量中的值等于值1,则执行逻辑代码1.
- 如果变量中的值等于值2,则执行逻辑代码2.
- 如果变量中的值等于值n,则执行逻辑代码n.
- 如果变量中的值没有匹配的case值时,执行default中的逻辑代码。
eg:
package day3;
public calss TestSwitch{
public static void main(String[] args){
/*
switch(int 表达式){
case 值1: 代码块1
case 值2: 代码块2
default: 代码块
}
*/
java.util.Scanner s= new java.util.Scanner(System.in);
int a=s.nextInt();
switch(a){
case 1: System.out.println(1);
break;
case 2: System.out.println(2);
break;
case 3: System.out.println(3);
break;
default: System.out.println("Others");
}
}
}
三、不确定循环
1.循环结构
概念:通过某个条件,重复执行一段逻辑代码。
whilie循环
语法:
while(布尔表达式){
//逻辑代码(循环操作)
}
eg:
package day3;
public calss TestSwitch{
public static void main(String[] args){
int i=1;
int result=0;
while(i<=100){
result+=i;
i++;
}
System.out.println(result);
}
}
do while 循环
语法:
do{
逻辑代码(循环操作)
}while(布尔表达式)
- 执行流程:
- 先执行一次循环操作之后,再进行布尔表达式判断。
- 如果结果为true,则再执行循环操作。
- 如果结果为false,才会退出循环结构,执行后续代码。
四、for循环
语法:
for(初始部分;循环条件;迭代部分){
//循环操作
}
五、break_continue
1.流程控制
- break:终止、跳出switch、循环结构。
- continue:跳出本次循环。
2.给程序起名跳出——自定义起名
loop:for(int i=1;i<=5;i++){ //loop可以换为其他的
for(int j=1;j<=44;j++){
if(i==4&&j==3)
break loop; //这里要照应loop
System.out.print("i="+i+"j="+j+"\t");
}
System.out.println();
}
六、局部变量
1.局部变量
- 概念:声明在函数内部的变量,必须先赋值 再使用。
- 作用范围:定义行开始到所在的代码块结束。
- 注意:多个变量,在重合的作用范围内,不可出现重名(命名冲突)。
if(ture){
int a=20; //只作用于ture内。
}
七、案例_百钱买百鸡
1.水仙花数
题目:公鸡3元钱一只,母鸡2元钱一只,小鸡1元钱3只。100元买100只鸡。
package day3;
public class Exc1{
public static void main(String[] args){
for(int a=0;a<=100;a++){
for(int b=0;b<=100;b++){
int c=100-a-b;
if(c%3!=0)
continue;
int m=a*3+b*2+c/3;
if(m==100){
System.out.println(a+“ ”+b+“ ”+c);
}
}
}
}
}
优化后:
package day3;
public class Exc1{
public static void main(String[] args){
for(int a=0;a<=133;a++){
int maxb=(100-3*a)/2;
for(int b=0;b<=maxb;b++){
int c=100-a-b;
if(c%3!=0)
continue;
int m=a*3+b*2+c/3;
if(m==100){
System.out.println(a+“ ”+b+“ ”+c);
}
}
}
}
}
八、案例_打印等腰三角形
- 找规律,总结
package day3;
public class Exc2{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
int n=s.nexInt();
for(int i=1;i<=n;i++){
for(int j=0;i<n-i;i++){ //打印n-i个空格
System.out.print(' ');
}
for(int j=0;i<2*i-1;i++){ //打印2*i-1个*
System.out.print(‘*’);
}
System.out.println(); //换行
}
}
}