1 package day3;
2 import java.util.Random;
3 import java.util.Scanner;
4
5 /**
6 * @author : haifei
7 *
8 * 流程控制语句之循环结构(for, while, do…while, break&continue)、随机数
9 *
10 */
11
12 public class Demo1_0519 {
13 public static void main(String[] args) {
14 // test1();
15 // test2();
16 // test3();
17 // test4();
18 // test5();
19 test6();
20 }
21
22 public static void test1() {
23 /*
24 for (初始化语句;条件判断语句;条件控制语句) {
25 循环体语句;
26 }
27 执行流程:
28 ①执行初始化语句
29 ②执行条件判断语句,看其结果是true(继续执行)还是false(循环结束)
30 ③执行循环体语句
31 ④执行条件控制语句
32 ⑤回到②继续
33 */
34 for (int i = 1; i <= 5; i++) {
35 System.out.println(i);
36 }
37 for (int i = 5; i >= 1; i--) {
38 System.out.println(i);
39 }
40
41 // 案例1:求1-100之间的偶数和
42 int sum = 0;
43 for (int i = 1; i <= 100; i++) {
44 if (i % 2 == 0) {
45 sum += i;
46 }
47 }
48 System.out.println("sum=" + sum);
49
50 // 案例2:输出所有的“水仙花数”(水仙花数指的是一个三位数,个位、十位、百位的数字立方和等于原数)
51 /*
52 问题:任意数字的指定位上的数值如何求?
53 思路:先对指定数字进行整除'指定数字所在位数',将该数字移动到个位位置(即最后一位),
54 再对刚刚得到的新数字进行对10取余得到该数字的值
55 举例:123456789中的5,先将其整除10000(5在万位)得到12345,再将其对10取余得到5
56 */
57 int count = 0;
58 for (int i = 100; i <= 999; i++) {
59 int ge = i % 10; //相当于i/1%10
60 int shi = i / 10 % 10;
61 int bai = i / 100 % 10;
62 if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
63 System.out.println(i);
64 count++;
65 }
66 }
67 System.out.println("水仙花数的个数:" + count);
68 }
69
70 public static void test2() {
71 /*
72 初始化语句;
73 while (条件判断语句) {
74 循环体语句;
75 条件控制语句;
76 }
77 执行流程同for
78 */
79
80 for (int j = 1; j <= 5; j++) {
81 System.out.println("hello java");
82 }
83
84 System.out.println("================================");
85
86 int i = 1;
87 while (i <= 5) {
88 System.out.println("hello java");
89 i++;
90 }
91
92 // 案例
93 int count = 0;
94 double paper = 0.01;
95 int zf = 884430;
96 while (paper <= zf) {
97 paper *= 2;
98 count++;
99 }
100 System.out.println(count);
101 }
102
103 public static void test3() {
104 /*
105 初始化语句;
106 do {
107 循环体语句;
108 条件控制语句;
109 }while(条件判断语句);
110 执行流程同for
111 */
112
113 for (int j = 1; j <= 5; j++) {
114 System.out.println("hello java");
115 }
116
117 System.out.println("=================================");
118
119 int i = 1;
120 do {
121 System.out.println("hello java");
122 i++;
123 } while (i <= 5);
124 }
125
126 public static void test4() {
127 /*
128 三种循环的区别
129 for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
130 do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
131 for循环和while的区别
132 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
133 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
134 死循环(无限循环)的三种格式
135 1. for(;;){}
136 2. while(true){}
137 3. do{}while(true);
138 */
139
140 for (int x = 3; x < 3; x++) {
141 System.out.println("for");
142 }
143
144 int y = 3;
145 while (y < 3) {
146 System.out.println("while");
147 y++;
148 }
149
150 int z = 3;
151 do {
152 System.out.println("do-while");
153 z++;
154 } while (z < 3);
155
156 for (int a = 1; a < 3; a++) {
157 System.out.println("for");
158 }
159 // System.out.println(a); // error
160
161 int b = 1;
162 while (b < 3) {
163 System.out.println("while");
164 b++;
165 }
166 System.out.println(b); // ok
167 }
168
169 public static void test5() {
170 //break和continue都是基于条件控制的,用在循环中时,前者结束当前整个循环结构,后者跳过本次循环进入下一次循环
171 for (int i = 1; i <= 10; i++) {
172 if (i % 2 == 0) {
173 // continue;
174 break;
175 }
176 System.out.println(i);
177 }
178
179 // 循环嵌套
180 // 整个内循环,就是外循环的一个循环体,内部循环体没有执行完毕,外循环是不会继续向下执行的
181 // 外循环执行一次,内循环执行一圈
182 for (int hour = 0; hour < 24; hour++) {
183 for (int minute = 0; minute < 60; minute++) {
184 System.out.println(hour + "时" + minute + "分");
185 }
186 System.out.println("-------------------------------");
187 }
188 }
189
190 public static void test6() {
191 /*
192 Random使用步骤:
193 1. 导入包
194 2. 创建对象
195 3. 产生随机数
196 */
197 Random rd = new Random();
198 int num1 = rd.nextInt(10); // 产生0-9的随机数
199 System.out.println(num1);
200 int num2 = rd.nextInt(100) + 1; //产生1-100的随机数
201 System.out.println(num2);
202
203 for (int i = 0; i < 10; i++) {
204 int a = rd.nextInt(10);
205 System.out.println("第" + (i + 1) + "个随机数=" + a);
206 }
207
208 // 案例:猜数字
209 while (true) {
210 Scanner sc = new Scanner(System.in);
211 System.out.print("请输入你猜测的数字(1-100):");
212 int guessNum = sc.nextInt();
213 if (guessNum > num2) {
214 System.out.println("猜大了");
215 } else if (guessNum < num2) {
216 System.out.println("猜小了");
217 } else {
218 System.out.println("恭喜,猜中咯");
219 break;
220 }
221 }
222 }
223
224 }