仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1015|回复: 19
打印 上一主题 下一主题

[学习教程] 发布一篇java的switch语句

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。
“开关”(Switch)偶然也被分别为一种“选择语句”。依据一个整数表达式的值,switch语句可从一系列代码选出一段实行。它的格局以下:

switch(整数选择因子){
case整数值1:语句;break;
case整数值2:语句;break;
case整数值3:语句;break;
case整数值4:语句;break;
case整数值5:语句;break;
//..
default:语句;
}

个中,“整数选择因子”是一个特别的表达式,能发生整数值。switch能将整数选择因子的了局与每一个整数值对照。若发明符合的,就实行对应的语句(复杂或复合语句)。若没有发明符合的,就实行default语句。
在下面的界说中,人人会注重到每一个case均以一个break开头。如许可以使实行流程跳转至switch主体的开端。这是构建switch语句的一种传统体例,但break是可选的。若省略break,会持续实行前面的case语句的代码,直到碰到一个break为止。只管一般不想呈现这类情形,但对有履历的程序员来讲,大概可以善加使用。注重最初的default语句没有break,由于实行流程已到了break的跳转目标地。固然,假如思索到编程作风方面的缘故原由,完整能够在default语句的开端安排一个break,只管它并没有任何实践的用途。
switch语句是完成多路选择的一种易行体例(好比从一系列实行路径中选择一个)。但它请求利用一个选择因子,而且必需是int或char那样的整数值。比方,倘使将一个字串大概浮点数作为选择因子利用,那末它们在switch语句里是不会事情的。关于非整数范例,则必需利用一系列if语句。
上面这个例子可随机天生字母,并判别它们是元音仍是子音字母:
  1. //:VowelsAndConsonants.java
  2. //Demonstratestheswitchstatement
  3. publicclassVowelsAndConsonants{
  4. publicstaticvoidmain(String[]args){
  5. for(inti=0;i<100;i++){
  6. charc=(char)(Math.random()*26+a);
  7. System.out.print(c+":");
  8. switch(c){
  9. casea:
  10. casee:
  11. casei:
  12. caseo:
  13. caseu:
  14. System.out.println("vowel");
  15. break;
  16. casey:
  17. casew:
  18. System.out.println(
  19. "Sometimesavowel");
  20. break;
  21. default:
  22. System.out.println("consonant");
  23. }
  24. }
  25. }
  26. }///:~
复制代码
因为Math.random()会发生0到1之间的一个值,以是只需将其乘以想取得的最年夜随机数(关于英语字母,这个数字是26),再加上一个偏移量,失掉最小的随机数。
只管我们在这儿外表上要处置的是字符,但switch语句实践利用的字符的整数值。在case语句中,用单引号关闭起来的字符也会发生整数值,以便我们举行对照。
请注重case语句互相间是怎样聚合在一同的,它们顺次分列,为一部分特定的代码供应了多种婚配形式。也应注重将break语句置于一个特定case的开端,不然把持流程会复杂地下移,并持续判别下一个前提是不是符合。

1.详细的盘算
应出格寄望上面这个语句:
charc=(char)(Math.random()*26+a);
Math.random()会发生一个double值,以是26会转换成double范例,以便实行乘法运算。这个运算也会发生一个double值。这意味着为了实行加法,必需无将a转换成一个double。使用一个“外型”,double了局会转换回char。
我们的第一个成绩是,外型会对char作甚么样的处置呢?换言之,假定一个值是29.7,我们把它外型成一个char,那末了局值究竟是30仍是29呢?谜底可从上面这个例子中失掉:
  1. //:CastingNumbers.java
  2. //Whathappenswhenyoucastafloatordouble
  3. //toanintegralvalue?
  4. publicclassCastingNumbers{
  5. publicstaticvoidmain(String[]args){
  6. double
  7. above=0.7,
  8. below=0.4;
  9. System.out.println("above:"+above);
  10. System.out.println("below:"+below);
  11. System.out.println(
  12. "(int)above:"+(int)above);
  13. System.out.println(
  14. "(int)below:"+(int)below);
  15. System.out.println(
  16. "(char)(a+above):"+
  17. (char)(a+above));
  18. System.out.println(
  19. "(char)(a+below):"+
  20. (char)(a+below));
  21. }
  22. }///:~
复制代码
输入了局以下:
  1. above:0.7
  2. below:0.4
  3. (int)above:0
  4. (int)below:0
  5. (char)(a+above):a
  6. (char)(a+below):a
复制代码
以是谜底就是:将一个float或double值外型成整数值后,老是将小数部分“砍失落”,不作任何进位处置。
第二个成绩与Math.random()有关。它会发生0和1之间的值,可是否包含值1呢?用正统的数学言语表达,它究竟是(0,1),[0,1],(0,1],仍是[0,1)呢(方括号暗示“包含”,圆括号暗示“不包含”)?一样地,一个树模程序向我们展现了谜底:
  1. //:RandomBounds.java
  2. //DoesMath.random()produce0.0and1.0?
  3. publicclassRandomBounds{
  4. staticvoidusage(){
  5. System.err.println("Usage:
  6.         "+
  7. "RandomBoundslower
  8.         "+
  9. "RandomBoundsupper");
  10. System.exit(1);
  11. }
  12. publicstaticvoidmain(String[]args){
  13. if(args.length!=1)usage();
  14. if(args[0].equals("lower")){
  15. while(Math.random()!=0.0)
  16. ;//Keeptrying
  17. System.out.println("Produced0.0!");
  18. }
  19. elseif(args[0].equals("upper")){
  20. while(Math.random()!=1.0)
  21. ;//Keeptrying
  22. System.out.println("Produced1.0!");
  23. }
  24. else
  25. usage();
  26. }
  27. }///:~
复制代码
为运转这个程序,只需在命令行键进下述命令便可:
javaRandomBoundslower

javaRandomBoundsupper

在这两种情形下,我们都必需野生中止程序,以是会发明Math.random()“仿佛”永久都不会发生0.0或1.0。但这只是一项实行罢了。若想到0和1之间有2的128次方分歧的双精度小数,以是假如全体发生这些数字,消费的工夫会远远凌驾一团体的性命。固然,最初的了局是在Math.random()的输入中包含了0.0。大概用数字言语表达,输入值局限是[0,1)。
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net网页编程并驾齐驱的
沙发
发表于 2015-1-20 18:17:07 来自手机 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
变相怪杰 该用户已被删除
板凳
发表于 2015-1-28 23:48:12 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
小魔女 该用户已被删除
地板
发表于 2015-2-5 17:42:26 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
飘灵儿 该用户已被删除
5#
发表于 2015-2-13 01:03:28 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-3 11:58:29 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
山那边是海 该用户已被删除
7#
发表于 2015-3-6 15:16:33 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
活着的死人 该用户已被删除
8#
发表于 2015-3-11 23:55:29 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
再现理想 该用户已被删除
9#
发表于 2015-3-19 16:31:57 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
只想知道 该用户已被删除
10#
发表于 2015-3-21 23:24:47 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
金色的骷髅 该用户已被删除
11#
发表于 2015-3-24 04:51:56 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
老尸 该用户已被删除
12#
发表于 2015-4-12 09:54:45 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
爱飞 该用户已被删除
13#
发表于 2015-4-28 13:52:23 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
柔情似水 该用户已被删除
14#
发表于 2015-5-9 09:54:16 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
因胸联盟 该用户已被删除
15#
发表于 2015-6-13 09:23:51 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
不帅 该用户已被删除
16#
发表于 2015-6-16 19:31:57 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
小女巫 该用户已被删除
17#
发表于 2015-6-17 11:22:23 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
分手快乐 该用户已被删除
18#
发表于 2015-6-22 17:09:17 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
乐观 该用户已被删除
19#
发表于 2015-6-23 17:32:59 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
若天明 该用户已被删除
20#
发表于 2015-6-29 00:15:19 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-8 17:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表