控制结构
顺序控制
分支
- if/else,或者if else的运用
- 嵌套:最好不要超过三层
Switch分支结构
- 该图片转载于韩顺平老师在b站讲解的Switch流程图
![在这里插入图片描述](https://img-blog.csdnimg.cn/781e6f76311141fba660d5712587b262.png)
- 表达式数据类型,应和case 后面的数据类型一致,或者能够转换的。
- 表达式数据类型只能是byte,short,int,char,enum[枚举],String,注意不能是double或者其他的
- case语句中不能是变量,只能是常量
- 例子:
Scanner input = new Scanner(System.in);
System.out.println("请输入(a-d)");
char flag = input.next().charAt(0);
switch(flag){
case 'a' :
System.out.println("aaa");
break;
case 'b' :
System.out.println("bbb");
break;
case 'c':
System.out.println("ccc");
break;
default:
System.out.println("输入错误");
break;
}
System.out.println("hhh");
什么时候用switch,什么时候用if
- 当判断的具体数值不多,且数据类型为byte,short,int,char,enum[枚举],string类型时,用switch
- 当判断的是一个区间值时,用if分支
循环结构
- for
- while
- do while(先做一遍,再判断)
例子
Scanner input = new Scanner(System.in);
double avg = 0; //每个班的平均分
double allSum = 0; //所有班的总分
double allAvg = 0; //所有班的平均分
for(int i = 1;i <= 3;i++){
System.out.println("请输入第" + i + "个班级的五名学生成绩:");
double sum = 0;
for(int j = 1; j <= 5; j++){
double score = input.nextDouble();
sum += score;
System.out.println("第" + j + "名学号成绩为" + score);
}
allSum += sum;
System.out.println("这个班的总分为" + sum + "; " + "平均分为" + sum/5);
}
System.out.println("所有班的平均分为" + allSum/15);
- 需要注意的是System.out.print()和System.out.println()是不相同的,前者打印输出后不会换行,后者输出后会自动换行
空心金字塔
int totalLevel = 5; //总层数
for(int i = 1; i <= totalLevel; i++){
for(int k = 1; k <= totalLevel-i; k++){ //*号前面的空格
System.out.print(" ");
}
for(int j = 1; j <= 2 * i - 1; j++){
if(j == 1 || j == 2 * i -1 || i ==totalLevel) //除了最后一行的每一行都是第一个和第2 * i - 1输出*
System.out.print("*");
else {
System.out.print(" "); //中间全部输出空格
}
}
System.out.println(); //末尾换行
}
函数Math.random()
- 随机生成大于等于0,小于1的随机小数
- 如果要生成0-100之间的数,就可以把函数生成的值*100转为(int)生成0-99的数,最后加一就可以了:
(int)Math.random() * 100 + 1
break/continue/return