当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java的switch语句[Java编程]

赞助商链接



  本文“java的switch语句[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语句.
下面这个例子可随机生成字母,并判断它们是元音还是辅音字母:
//: VowelsAndConsonants.java
// Demonstrates the switch statement

public class VowelsAndConsonants {
  public static void main(String[] args) {
    for(int i = 0; i < 100; i++) {
      char c = (char)(Math.random() * 26 + 'a');
      System.out.print(c + ": ");
      switch(c) {
      case 'a':
      case 'e':
      case 'i':
      case 'o':
      case 'u':
                System.out.println("vowel");
                break;
      case 'y':
      case 'w':
                System.out.println(
                  "Sometimes a vowel");
                break;
      default:
                System.out.println("consonant");
      }
    }
  }
} ///:~

由于Math.random()会产生0到1之间的一个值,所以只需将其乘以想得到的最大随机数(关于英语字母,这个数字是26),再加上一个偏移量,得到最小的随机数.
固然我们在这儿表面上要处理的是字符,但switch语句实际利用的字符的整数值.在case语句中,用单引号封闭起来的字符也会产生整数值,以便我们举行对比.
请注意case语句彼此间是若何聚合在一同的,它们顺次布列,为一部份特定的代码供应了多种匹配情势.也应注意将break语句置于一个特定case的末尾,不然掌握流程会简单地下移,并持续判断下一个条件能否符合.

1. 具体的计算
应分外留神下面这个语句:
char c = (char)(Math.random() * 26 + 'a');
Math.random()会产生一个double值,所以26会转换成double范例,以便履行乘法运算.这个运算也会产生一个double值.这意味着为了履行加法,必须无将'a'转换成一个double.操纵一个“造型”,double后果会转换回char.
我们的第一个问题是,造型会对char作什么样的处理呢?换言之,假定一个值是29.7,我们把它造型成一个char,那么后果值毕竟是30还是29呢?答案可从下面这个例子中得到:

//: CastingNumbers.java
// What happens when you cast a float or double
// to an integral value?

public class CastingNumbers {
  public static void main(String[] args) {
    double
      above = 0.7,
      below = 0.4;
    System.out.println("above: " + above);
    System.out.println("below: " + below);
    System.out.println(
      "(int)above: " + (int)above);
    System.out.println(
      "(int)below: " + (int)below);
    System.out.println(
      "(char)('a' + above): " +
      (char)('a' + above));
    System.out.println(
      "(char)('a' + below): " +
      (char)('a' + below));
  }
} ///:~

输出后果以下:

above: 0.7
below: 0.4
(int)above: 0
(int)below: 0
(char)('a' + above): a
(char)('a' + below): a

所以答案就是:将一个float或double值造型成整数值后,老是将小数部份“砍掉”,不作任何进位处理.
第二个问题与Math.random()有关.它会产生0和1之间的值,但能否包含值'1'呢?用正统的数学语言表达,它毕竟是(0,1),[0,1],(0,1],还是[0,1)呢(方括号表示“包含”,圆括号表示“不包含”)?一样地,一个示范程序向我们揭露了答案:

//: RandomBounds.java
// Does Math.random() produce 0.0 and 1.0?

public class RandomBounds {
  static void usage() {
    System.err.println("Usage: \n\t" +
      "RandomBounds lower\n\t" +
      "RandomBounds upper");
    System.exit(1);
  }
  public static void main(String[] args) {
    if(args.length != 1) usage();
    if(args[0].equals("lower")) {
      while(Math.random() != 0.0)
        ; // Keep trying
      System.out.println("Produced 0.0!");
    } 
    else if(args[0].equals("upper")) {
      while(Math.random() != 1.0)
        ; // Keep trying
      System.out.println("Produced 1.0!");
    } 
    else 
      usage();
  }
} ///:~
为运行这个程序,只需在号令行键入下述号令便可:
java RandomBounds lower

java RandomBounds upper

在这两种情形下,我们都必须人工中止程序,所以会发现Math.random()“仿佛”永久都不会产生0.0或1.0.但这只是一项实行罢了.若想到0和1之间有2的128次方差别的双精度小数,所以假如全部产生这些数字,耗费的时间会远远超越一个人的生命.当然,最后的后果是在Math.random()的输出中包含了0.0.大概用数字语言表达,输出值范围是[0,1).
  以上是“java的switch语句[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .