热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

03控制流程语句

1流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。2其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构和
  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 }

 


推荐阅读
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • ***byte(字节)根据长度转成kb(千字节)和mb(兆字节)**parambytes*return*publicstaticStringbytes2kb(longbytes){ ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
author-avatar
王晓东
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有