您现在的位置: 弘智首页 > JAVA > JAVA语言基础 >

java条件运算符

时间:2012-10-31 来源:弘智教育 点击: 次
嵌套的if语句

    当if表达式为true时,被执行的语句可以还是一条if语句,它也可以作为else子句的一条语句。这就使你可以表达一种错综复杂的逻辑关系,比如"如 果我的银行有足够的余额,如果我带着支票本,就买一辆汽车,要不然如果我可以从银行获得贷款,也会买一辆汽车。"一个嵌套在另一条if语句中的if语句又 可以包含一个嵌套的if语句。可以像此下去多层嵌套,只要你清楚自己在做什么或对繁琐、混乱情有独钟。

    我们可以对前面例子中的if语句进行修改来说明嵌套的if语句,
    if (number%2==0)   //Test if it is even
    (
    if (number<50)     //Output a message if number is <50
    system.out.println(you have got an even number<50,"+number)
    )
    else
    system.out .println (you have got an odd number,"+number);It is odd

    这里如果假设number的值小于50,则显示一条有偶数值的信息。

    因为有else子句,所以必须用一个大括号将嵌套的if语句括起来。大括号中内嵌I}语句意味着,若该语句拥有else子句,必将出现在包含嵌套if语句的大括号中。如果没有大括号,程序也可以被编译并运行,但逻辑结构却会发生变化。让我们看看是怎么回事。

    在嵌套多层if语句后,会产生一个问题,即一个特定的else子句属于哪一个if语句。如果将上面代码中的大括号去掉,我们可以得到
    if (number%2==0)          //Test if it is even
    if (number<50)           //Output a message if number is <50
    system.out.println(you have got an even number<50,"+number)
    else
    system.out.println(you have got an odd number +number);//It is odd

    这种书写形式与前面的逻辑结构有着本质的区别。这里的else子句属于被嵌套在内的用来测试number值小于50的if语句,所以,第二个 prirttln()调用仅在偶数值大于或等于50时才被执行。很显然,与我们所需要的结果有差别,因此本例中的输出结果是错误的,但是它能够说明将 else连接到if的规则,即:

    else子句永远属于前面的距离它最近的、属同一程序块的、没有匹配else子句的if语句。

    你一定要认真仔细,以确保在嵌套if语句时的缩进格式正确。依照标识的缩进格式理解逻辑结构,很容易让你采纳,但它有可能是完全错误的。

    让我们在另一个程序中试试if-else的应用,试试看--一种笨拙的译码方式

    按如下所示,建立LetterCheck类并编写main()方法的代码:

    public class LetterCheck
    {
    public static voif main(string[] args)
    {
    char symbol="A"
    symbol=(char)(128.0*Math.random());       //Generate random character
    if (symnol>=A)                            //Is it A or greator
    if system.out.println(you have the capital letter +symnol);
    else                               //It is  not z or less
    if (symbol>=a)                     //so is it a or greater?
    if (symbol>=z)                    //YES so is it  z or less?
    //Then it is a small letter
    system.out.println(you have the small letter  symbol
    else                          //it is not less than z
    system.out.println(
    "the code is less than a and it's not a letter)
    else
    system.out.println(the code is less than a so it's not a letter)

    如何工作

    这个程序用来识别存储在 变量symbol中的值是大写字母、小写字母还是其他字符。它首先产生一个在0到127之间的随机字符,这个字符与基本的7位ASCII字符集 (ISO646)中的字符对应。你可以在附录D中查阅ASCII字符集编码。ASCII字符的编码与Unicvde字符集中对应字符的编码相同。在这个字 符集中,字母'A'到'Z'用65到90这组相邻的ASCII编码来表示。小写字母用另一组从97到122·的相邻ASCII编码来表示。所以,你只需将 字符编码加上32就可以将任何大写字母转换为小写字母。

    该If语句确实有一些复杂,所以让我们来看看下述逻辑图。

    这张图一共有4条if语句。第一条if语句测试symbol是否大于等于'A'.如果成立,它可能是一个大写字母、小写字母或其他可能的编码,反之,它肯定不是一个字母。所以,if语句的else子句(直到程序结尾)对这种结果产生一个相应的信息。

弘智主页 | 弘智介绍 | 培训课程 | XML地图