目录
1.循环结构:
1.for循环:
2.while循环:
3.do...while循环语句:
1.重点:三种循环区别:
4.循环嵌套:
5.跳转控制语句:
break结束的是离它最近的那个循环:
6.random产生随机数:
循环语句:
初始化语句
判断语句
循环语句体
控制语句
Java中的循环结构语句:
for 循环 | while循环 | do ..while 循环
for循环语句格式:
for(初始化语句;判断语句;控制条件语句){
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句,看其结果是true还是false
C:若为false,则结束循环
如果是true,执行循环体语句
D:执行控制语句
E:回到B继续
案例1:用for循环控制台输出5次“HelloWorld”
public class forDemo {
public static void main(String[] args) {
for (int x = 1; x <= 5; x++) {
System.out.println("HelloWorrld");
}
}
}
输出结果:
HelloWorrld
HelloWorrld
HelloWorrld
HelloWorrld
HelloWorrld
案例2:for循环输出1-5和5-1:
public class for_test {
public static void main(String[] args) {
for (int x = 1; x <= 5; x++) {
System.out.println(x);
}
System.out.println("------------------");
for (int x=5;x>=1;x--){
System.out.println(x);
}
}
}
输出结果:
1
2
3
4
5
------------------
5
4
3
2
1
案例3:求1-5相加之和:
思路:
A:定义一个求和变量,初始化值是0
B:获取1-5的数据,使用for循环
C:把每一次获取的数据累加到求和变量
D:输出求和变量
public class for_test2 {
public static void main(String[] args) {
int sum = 0;
for (int x = 1; x <= 5; x++) {
sum += x;
}
System.out.println(sum);
}
}
输出结果:15
案例4:计算1-100间偶数的和:
分析:
A:定义求和变量,初始化值是0
B:获取1-100之间的偶数,用for循环实现
C:拿到每一个获取的数据判断看是否是偶数
如果是偶数,就累加
D:输出求和变量
public class for_test3 {
public static void main(String[] args) {
int sum = 0;
for (int x = 1; x <= 100; x++) {
if ((x % 2) == 0) {
sum += x;
}
}
System.out.println(sum);
}
}
输出结果:2550
重点案例:水仙花数
水仙花数:
水仙花数指一个三位数,其各位数字立方和等于该数本身
例如:153为一个水仙花数
要求:求出所有的水仙花数
分析:
A:三位数即告知了范围
B:获取每个三位数的个位,十位,百位
C:拿个位,十位,百位的立方和和该数比较,如果相等,就说明该数为水仙花数,在控制台打印
public class for_test4 {
public static void main(String[] args) {
for (int x = 100; x < 1000; x++) {
int ge = x % 10;//求得个位
int shi = x / 10 % 10;//求得十位
int bai = x / 100;//求得百位
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == x) {
System.out.println(x);
}
}
}
}
输出结果:
153
370
371
407
接上案例,统计水仙花数个数:
分析:
A:定义统计变量,初始化值为0
B:获取三位数,用for循环实现
C:获取每个位上的数据
D:判断数据是否为水仙花数,若是,则统计变量+1
E:输出统计变量
public class for_test4 {
public static void main(String[] args) {
int sum = 0;
for (int x = 100; x < 1000; x++) {
int ge = x % 10;//求得个位
int shi = x / 10 % 10;//求得十位
int bai = x / 100;//求得百位
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == x) {
sum++;
}
}
System.out.println(sum);
}
}
输出结果:4
while循环的语句格式:
初始化语句
while(判断条件语句){
循环体语句;
控制条件语句;
}
举例1:控制台输出5次“HelloWorld”
public class whileDemo {
public static void main(String[] args) {
int x = 1;
while (x<=5){
System.out.println("HelloWorld");
x++;
}
}
}
举例2:while循环求1-100之间的数据之和:
public class while_test {
public static void main(String[] args) {
int x = 1;
int sum = 0;
while (x <= 100) {
sum += x;
x++;
}
System.out.println(sum);
}
}
do...while循环语句格式:
初始化语句
do{
循环体语句;
控制条件语句;
}while(判断语句);(别忘分号)
案例1:do...while输出5句“HelloWorld”
public class dowhile_Demo {
public static void main(String[] args) {
int x = 1;
do {
System.out.println("HelloWorld");
x++;
} while (x <= 5);
}
}
do...while循环语句至少执行一次循环
而for和while循环语句要先进行条件的判断,然后看是否执行循环语句
for循环与while循环的区别:
for中初始化的变量,出了循环就不能使用了
显然,for循环更好,节省内存
推荐使用顺序:
for --while--do...while
循环嵌套:就是循环体语句本身就是一个循环语句
1.需求:输出一个四行五列的(*)图标
结果:
*****
*****
*****
*****
public class for_for {
public static void main(String[] args) {
for (int x = 1; x <= 4; x++) {
for (int y = 1; y <= 5; y++) {
System.out.print("*");
}
System.out.println();
}
}
}
输出:
*****
*****
*****
*****
结论:外循环控制的是行,内循环控制的是列
案例2:打印一个5行5列的三角形:
public class for_for2 {
public static void main(String[] args) {
for (int x = 1;x<=5;x++){
for (int y=1;y<=x;y++){
System.out.print("*");
}
System.out.println();
}
}
}
输出结果:
*
**
***
****
*****
案例三:打印久久乘法表:
public class for_ninenine {
public static void main(String[] args) {
for(int x=1;x<=9;x++){
for(int y= 1;y<=x;y++){
System.out.print(y+"*"+x+"="+x*y+"\t");
}
System.out.println();
}
}
}
注:其中\t表示一个缩进(一个tab键的位置)
输出结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
break:中断的意思
用途:
A:switch语句中,用于结束switch语句
B:循环语句中,用于结束循环
public class my_break {
public static void main(String[] args) {
for (int x =1;x<=5;x++){
if(x==3){
break;
}
System.out.println("hi");
}
}
}
输出结果:
hi
hi
public class for_for2 {
public static void main(String[] args) {
for (int x = 1;x<=5;x++){
for (int y=1;y<=x;y++){
if(x==3){
break;
}
System.out.print("*");
}
System.out.println();
}
}
}
输出结果:
*
******
*****
如果要跳出外层循环如何实现?:
用带标签的语句:
格式:标签名:语句
public class for_for2 {
public static void main(String[] args) {
wc:
for (int x = 1; x <= 5; x++) { //标签名wc
nc:
for (int y = 1; y <= x; y++) {//标签名nc
if (x == 3) {
break wc;
}
System.out.print("*");
}
System.out.println();
}
}
}
输出:
*
**
continue:继续的意思
使用场景:
循环中。离开使用场景是没有意义的
break与continue的区别:
break:跳出整个循环
continue:跳出这一次的操作,进入下一次的执行
Random:用于产生随机数的类。用法与Scanner类似。
使用步骤:
A:导包
import java.util.Random;
B:创建对象
Random r = new Random();
C:获取随机数:
int number = r.nextInt();
案例一:获取5次一到10的随机数
package day_3;
/*
@author: MR.chan
@file: my_random.py
@time: 2020/03/23
@desc:
*/
import java.util.Random;
public class my_random {
public static void main(String[] args) {
Random r =new Random();
for (int x = 1;x<=5;x++){
int nb = r.nextInt(10);
System.out.println(nb);
}
}
}
输出结果:
7
4
0
4
0
若要获得1-100的随机数,则换成:
int nb = r.nextInt(100)+1;
实现案例2:
猜数游戏:
系统产生1-100的随机数,请猜出这个数据是多少
package day_3;
/*
@author: MR.chan
@file: my_game.py
@time: 2020/03/23
@desc:
*/
import java.util.Random;
import java.util.Scanner;
public class my_game {
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt(100)+1;
System.out.println("请输入您猜的数字:");
while (true){
Scanner sc = new Scanner(System.in);
int guss_number = sc.nextInt();
if(guss_number==num){
System.out.println("你猜对了");
break;
}else if(guss_numbernum){
System.out.println("你猜大了");
}
}
}
}
其中涉及死循环while(true){}