JavaSE-3【流程控制语句之循环结构、break&continue、随机数】
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 }