为了应付程序所可能遇到的各种状况,Java提供了绦件判断 - if ,它的语法如下:
if(条件式) 陈述句一; else 陈述句二;
这个语法的意思,白话来说,就是当条件式成立时(true),则执行陈述句一,要不然就执行陈述句二;如果条件式不成立时并不想作任何事,则else可以 省略。
在 if 后如果有两个以上陈述句,称之为「复合陈述句」(Compound statement),此时必须使用{ }将复合陈述句包括起来,例如:
if(条件式) { 陈述句一; 陈述句二; } else { 陈述句三; 陈述句四; }
下面来写个简单的程序,判断使用者的输入是奇数还是偶数:
import java.util.Scanner; public class ConditionIf { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入数字: "); int input = scanner.nextInt(); int remain = input % 2; if(remain == 1) System.out.println(input + "为奇数"); else System.out.println(input + "为偶数"); } }
在 if 中也可以再设定执行的条件,例如:
if(条件式一) { 陈述句一; if(条件式二) 陈述句二; 陈述句三; }
这只个简单的例子,其中陈述句二要执行,必须同时满足条件式一与二才行;再来看个例子:
if(条件式一) { 陈述句一; // 其它陈述句 } else if(条件式二) 陈述句二;
如果条件式一不满足,就会执行else中的陈述,而我们在这边进行条件式二的测试,如果满足就执行陈述句二,由于Java是个自由格式语言,您可以适当的 排列这个程序,这会比较好懂一些:
if(条件式一) { 陈述句一; // 其它陈述句 } else if(条件式二) 陈述句二;
基于这个方式,您可以如下设定多个条件,且易读易懂:
if(条件式一) 陈述一; else if(条件式二) 陈述句二; else if(条件式三) 陈述句三; else 陈述句四;
陈述句四会在条件式一、二、三都不成立时执行;下面这个程序是个简单的例子,处理学生的成绩等级问题:
import java.util.Scanner; public class ConditionIf { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("输入分数:"); int score = scanner.nextInt(); if(score >= 90) System.out.println("得A"); else if(score >= 80 && score < 90) System.out.println("得B"); else if(score >= 70 && score < 80) System.out.println("得C"); else if(score >= 60 && score < 70) System.out.println("得D"); else System.out.println("得E(不及格)"); } }
在这边要注意的是,if与else的配对,例如下面这个程序依缩排来看,您觉得有无问题存在?
if(条件式一) if(条件式二) 陈述句一; else 陈述句二;
很多人都会以为条件式二的if会与else配对,但事实上是条件式一的if与else配对,加上括号就不会有问题了:
if(条件式一) { if(条件式二) 陈述句一; else 陈述句二; }
如果想避免这种错误,在程序中多使用括号是必要的,多写一些总是比少写一些来得保险一点。