1 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
2 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构和循环结构,如下图所示:
3 if单分支选择结构
4 if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句
5 package ifdemo;
6
7 public class Test {
8 public static void main(String[] args) {
9 double n1 = 6*Math.random();
10 double n2 = 6*Math.random();
11 double n3 = 6*Math.random();
12 int sum = (int)(n1 + n2 + n3);
13 if (sum >= 15) {
14 System.out.println("今天手气不错");
15 }
16
17 if (sum >= 10 && sum < 15) {
18 System.out.println("今天手气一般");
19 }
20
21 if (sum < 10) {
22 System.out.println("今天手气不好");
23 }
24 System.out.println("今日运势:"+sum);
25
26 }
27
28 if-else双分支选择结构
29 当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分
30 package ifdemo;
31
32 import java.util.Scanner;
33
34 /**
35 抽奖说明 会员号的百位数字和随机数相等 则会幸运会员
36 输出 XXXX会员,您是幸运会员,否则输出 XXXX 谢谢您的支持
37
38
39 * @author tang
40 *
41 */
42 public class Test02 {
43 public static void main(String[] args) {
44 //创建一个Scanner的变量 用于输入会员卡卡号
45 Scanner input = new Scanner(System.in);
46 System.out.println("请输入会员卡卡号");
47 int no = input.nextInt();
48 //获取会员卡百位数字 213
49 int b = (no%1000)/100;
50
51 //生成一个0~9的随机数
52 int number = (int)(10*Math.random());
53
54 //判断会员卡卡号百位数字是否和随机数相等
55 if (b == number) {
56 System.out.println(no+"恭喜您,中奖了");
57 }else {
58 System.out.println(no+"很遗憾没中奖.谢谢惠顾");
59 }
60
61 System.out.println("程序结束");
62 }
63 }
64
65
66 package ifdemo;
67
68 import java.util.Scanner;
69
70 /**
71 小孩搬桌子: 年龄大于7岁可以搬桌子了,大于5岁且为男孩,也可以搬桌子了
72 否则不可以搬动桌子 你还太年轻了
73 * @author tang
74 *
75 */
76 public class Test03 {
77 public static void main(String[] args) {
78 Scanner input = new Scanner(System.in);
79 System.out.println("请输入年龄");
80 //输入年两
81 int age = input.nextInt();
82 System.out.println("请选择性别:1,男 2,女");
83 //输入性别
84 int gender = input.nextInt();
85
86 if (age >= 7) {
87 System.out.println("可以搬桌子");
88 }
89 if (age >= 5 && age < 7) {
90 if (gender == 1) {
91 System.out.println("五岁到七岁之间的男孩可以搬桌子");
92 }else {
93 System.out.println("五岁到七岁之间的女孩不可以搬桌子");
94 }
95 }
96 if (age < 5) {
97 System.out.println("你不可以搬桌子,太年轻");
98 }
99 }
100 }
101
102 If-else if-else多分支选择结构
103 if(布尔表达式1) {
104 语句块1;
105 } else if(布尔表达式2) {
106 语句块2;
107 }………
108 else if(布尔表达式n){
109 语句块n;
110 } else {
111 语句块n+1;
112 }
113 逐条if语句进行判断
114 条件匹配,进入语句体
115 否则对if语句继续匹配
116
117 package ifelseif;
118
119 import java.util.Scanner;
120
121 /**
122 * 0~3 婴儿 好好吃奶
123 * 3~5 儿童 好好玩
124 * 6~22 少年 好好学习
125 * 23~60 中年 好好挣钱
126 * 60~80 中老年 好好补钙
127 * 80~ 老年 好好晒太阳
128 * @author tang
129 *
130 * 6~23 精力旺盛 时间充足 财力不足
131 * 24~60 精力旺盛 时间不足 财力充足
132 * 60~ 精力不足 时间充足 财力充足
133 */
134 public class IfElseIf {
135 public static void main(String[] args) {
136 Scanner input = new Scanner(System.in);
137 System.out.println("请输入年龄");
138 int age = input.nextInt();
139 if (age <= 3) {
140 System.out.println("婴儿,应该好好吃奶");
141 }else if(age < 6){
142 System.out.println("儿童,好好玩");
143 }else if(age < 22){
144 System.out.println("少年,要好好学习");
145 }else if(age <= 60){
146 System.out.println("中年,要好好工作");
147 }else if (age <= 80) {
148 System.out.println("中老年,要补钙");
149 }else {
150 System.out.println("老年人,多晒晒太阳");
151 }
152 System.out.println("程序结束");
153 }
154 }
155
156
157
158 while循环
159 在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
160 语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
161 package whiledemo;
162 /**
163 * 循环4要素
164 * 1,初始化
165 * 2,条件判断
166 * 3,循环体
167 * 4,迭代
168 * @author tang
169 *
170 */
171 public class WhileDemo {
172 public static void main(String[] args) {
173 int i = 0;//初始化操作
174 while(i < 1000){//条件判断的操作
175 //循环体
176 System.out.println(i);
177 //迭代 就是让条件判断趋向于false的操作
178 i ++;
179 }
180 System.out.println("程序结束");
181 }
182 }
183
184
185
186 package test;
187
188 import java.util.Scanner;
189
190 /**
191 * 练习3:商场推出幸运抽奖活动 根据抽奖规则计算会员卡号各位数字之和为16,则为幸运会员
192 * @author tang
193 *
194 */
195 public class Test03 {
196 public static void main(String[] args) {
197 Scanner input = new Scanner(System.in);
198 System.out.println("请输入四位数的会员卡卡号");
199 //接收到用户输入的卡号
200 int cardNo = input.nextInt();
201 //求出卡号千位上的数字
202 int k = cardNo/1000;
203 //求出卡号百位上的数字
204 int b = (cardNo%1000)/100;
205 //求出卡号十位上的数字
206 int s = (cardNo%100)/10;
207 //求出卡号个位上的数字
208 int g = cardNo%10;
209 // 求和
210 int sum = k + b + s + g;
211 String message = (sum == 16)?"恭喜你,中奖了!":"很遗憾,本次没有中奖";
212 System.out.println(message);
213
214
215 }
216 }
217
218
219 switch多分支选择结构
220 根据表达式值的不同执行许多不同的操作
221 switch (表达式) {
222 case 值1 :
223 语句序列;
224 [break];
225 case 值2:
226 语句序列;
227 [break] ;
228 … … … … …
229 [default:
230 默认语句 ;]
231 }
232 1.switch语句会根据表达式的值从相匹配的执行,一直执行到break标签处
233 语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句(如果有的话)
234 2.只能处理等值条件判断的情况,且表达式必须为byte,short,int或char类型 ,String 不能是double,float. long
235 3.常量值必须是与表达式类型兼容的特定的一个常量
236 4.不允许有重复的case值
237 5.default子句为可选
238 package switchdemo;
239 /**
240 * 随机生成一个字母,并且判断该字母的类型
241 *
242 * @author tang
243 *
244 */
245 public class Test {
246 public static void main(String[] args) {
247 int n = (int)(26*Math.random());//产生一个[0,25)的随机数
248 char flg = (char)(97+n);//产生一个字母
249
250 switch (flg) {
251 case 'a':
252 case 'e':
253 case 'i':
254 case 'o':
255 case 'u':
256 System.out.println("产生了一个元音字母"+flg);
257 break;
258 case 'w':
259 case 'y':
260 System.out.println("产生了一个半元音字母"+flg);
261 break;
262 default:
263 System.out.println("产生了一个辅音字母"+flg);
264 break;
265 }
266 }
267 }
268
269
270
271 十进制转化成二进制和十进制转化成二进制小数
272 do-while:
273 先执行,后判断。
274 while:
275 先判断,后执行。
276 While和dowhile的区别:
277 Dowhile总是保证循环体会被至少执行一次!这是他们的主要差别
278
279 do-while语句
280 package Test;
281
282 import java.util.Scanner;
283
284 /**
285 * 从键盘输入某个十进制小数,转换成对应的二进制小数并输出。
286 * @author Administrator
287 *
288 */
289
290 public class D2Bpoint {
291 public static void main(String[] args) {
292 Scanner input = new Scanner(System.in);
293 System.out.println("请输入一个十进制的小数:");
294 double d = input.nextDouble();
295 double mul = d;
296 StringBuffer buffer = new StringBuffer("0");
297 int count = 0;
298 do{
299 double result = mul*2;
300 int i = (int)result;
301 buffer.append(i);
302 count++;
303 if(count == 7){
304 break;
305 }
306 mul = result - i;
307 }while(mul != 0);
308 System.out.println(d+ "转化成二进制小数位:"+buffer);
309 }
310
311 }
312
313
314 package Test;
315 /**
316 * 6.从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
317 * @author Administrator
318 *用2整除十进制整数,可以得到一个商和余数;再用2去除商,
319 *又会得到一个商和余数,如此进行,直到商为小于1时为止,
320 *然后把先得到的余数作为二进制数的低位有效位,
321 *后得到的余数作为二进制数的高位有效位,依次排列起来。
322 */
323 import java.util.Scanner;
324
325 public class Test10to2 {
326 public static void main(String[] args) {
327 Scanner input = new Scanner(System.in);
328 System.out.println("请输入一个十进制的整数:");
329 int num = input.nextInt();
330 int num2 = num;
331 String str = "";
332 do{
333 int div = num/2 ;
334 int mod = num%2 ;
335 str = mod + str;
336 num = div;
337 }while(num != 0);
338 System.out.println(num2+"转换成二进制为:"+str);
339
340
341
342
343 }
344
345 }