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 }