Java基础笔记003
一、今日内容
1. 【掌握】掌握switch语句
2. 【掌握】for循环
3. 【掌握】while循环
4. 【理解】do...while循环
5. 【理解】三种循环之间的区别
6. 【理解】跳转控制语句
7. 【理解】循环的嵌套
8. 【掌握】Random的使用
二、switch语句
1.语法结构–分支/条件语句结构
switch(控制表达式){
case 值1:
代码块;
break;
case 值2:
代码块;
break;
...
default:
代码块;
}
2.特点
-
switch条件语句中控制表达式的值只能是是byte,short,int,字符串,char以及enum枚举类型。
-
switch条件语句是值比较的方式
-
如不是最后一个case,代码中没有加break,可能会发生穿透现象,如下:
switch (4) {
case 2:
System.out.println("22222");
case 4:
System.out.println("4444");
case 6:
System.out.println("6666");
case 8:
System.out.println("8888");
default:
System.out.println("default");
}
运行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOJVh7YO-1634015095274)(assets/image-20211011190725779.png)]
3.例子
输入成绩,输出成绩等级(90-100优、80-89良、60-79好、0-59差)
Scanner sc = new Scanner(System.in);
int grade = sc.nextInt();
switch(grade/10){
case 10:
case 9:
System.out.println("优");
break;
case 8:
System.out.println("良");
break;
case 7:
case 6:
System.out.println("好");
break;
default:
System.out.println("差");
}
三、for循环
1.语法结构–循环结构
for(1.初始化语句;2.条件判断语句;3.条件控制语句){
4.循环体语句;
}
2.例子
水仙花数:一个三位数,各项拆开后的立方之和等于原数。输出所有三位的水仙花数,并输出总个数。
//记录水仙花数总个数
int count = 0;
//循环查询所有水仙花数
for(int i = 100; i<=999; i++){
int a = i/100;
int b = i%100/10;
int c = i%10;
//判断当前数字是否为水仙花数
if ((a*a*a + b*b*b +c*c*c) ==i) {
System.out.print(i+"\t");
count++;
}
}
System.out.println("100~999之间水仙花数共"+count+"个");
四、while循环
1.语法结构
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
2.例子
求0-100之间偶数和。
int sum = 0;
int a = 0;
while(a <= 100){
if(a % 2 == 0){
sum += a;
}
a++;
}
System.out.println("sum="+sum); //2550
五、do…while循环
1.语法结构
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
2.例子
计算5的阶乘。
int sum = 1;
int n = 5;
do{
sum2*=n;
n--;
}while(n>=1);
System.out.println("5的阶乘结果:"+sum2); //120
3.三种循环的区别
- 语法结构不同
- 语句执行顺序不同
- 适用场景不同
- for和while可循环0到无数次(死循环),而do…while最少循环1次
4.循环嵌套
- 循环嵌套就是使用循环语句嵌套循环语句,达到要求的效果,解决复杂问题。
- 例子:输出三角形
int n = 6; //行数
for(int i=1; i<=n; i++){
for(int j=1;j<=n-i;j++){ //打印每行空格
System.out.print(" ");
}
for(int k=1;k<=i;k++){ //打印每行三角形左半部分
System.out.print("*");
}
for(int z=1;z<i;z++){ //打印三角形右半部分
System.out.print("*");
}
System.out.println(); //换下一行
}
//控制台打印结果:
*
***
*****
*******
*********
***********
六、跳转控制语句
1.continue
- 用在循环语句中时作用,推出本次循环,执行下次循环
- 用在嵌套循环中时,可以通过标记循环方法来决定哪一层循环跳转到下一次循环,如:
int q = 5;
a:while(q>1){ //标记该层while循环为a
q--;
for(int i=1;i<=4;i++){
if(i == 3){
continue a; //控制a表示的循环
}
System.out.println("for----for"+i);
}
System.out.println("---"); //所以该句永远执行不到
}
2.break
- 用在switch语句中,作用是终止某个case,并跳出switch结构
- 用在循环中就是跳出并结束循环,当然也可以标记循环来决定跳出结束哪一层的循环
3.return
- 方法级
- 作用是,结束执行所在方法
七、Random工具类
1.该类用来生成伪随机数的流。
//需要导包:
//inport java.util.Random;
Random r = new Random();
int number = r.nextInt(10);//随机生成整数,范围0-9
2.常用方法
方法 | 作用 |
---|---|
nextDouble() | 返回下一个伪随机数,从这个随机数发生器的序列中 0.0 和 1.0 之间的 float 值 0.0 分布。 |
nextInt(); | 返回下一个伪随机数,从这个随机数发生器的序列中均匀分布 int 值。 |
nextInt(int bound) | 返回伪随机的,均匀分布 int 值介于0(含)和指定值(不包括),从该随机数生成器的序列绘制。 |
3.使用
- 可以用来生成验证码
- 为需要随机数的游戏提供随机数,如:
//猜数字游戏
//生成一个1-100的随机数
Random r = new Random();
int number = r.nextInt(100)+1;
Scanner sc = new Scanner(System.in);
//记录猜次数
int count = 0;
//多次猜数,猜对为止
while(true){
int guess = sc.nextInt();
count++;
if (guess == number) {
System.out.println("猜对了!");
break;
}else if (guess > number) {
System.out.println("猜大了!");
}else{
System.out.println("猜小了!");
}
}
System.out.println("共猜了"+count+"次");