条件判断

发表时间:2017-05-08 16:08:34 浏览量( 57 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

java语言和C 语言类似,主要包括三种基本的控制流结构:

1.  程序顺序执行

2.  程序的判断结构

3.  程序的循环结构

如果把前面所学习的关键字理解成java语言的词汇量的话,那么结构化程序设计就是java语言所谓的”语法”了,这种跟计算机沟通的语言很简单。

前面章节中我们提过,java是以分号(;)作为一个语句的结束的,与换行符没有关系,任何一句表达式后面都必须带有一个分号(;),这样才算正常结束,否则会报语法错误,例如:

  		int a = 100;
		System.out.println(a);

以上都成为单条语句,而把多个语句放到一个形如 “{...代码...}”这样代码块中,成为语句块,就是以左大括号“{”开始,以右大括号结束“}”的代码我们成为语句块,左右大括号必须成对出现,语句块可以互相嵌套。语句块可以作为一个整体,类似把多个语句块组合成为一个语句块。我们在代码中可以任意使用包含多个语句成为一段语句块,有时也称为程序块。但是在一些情况下,大括号是不可缺少的,比如定义一个类的时候,或者定义一个普通方法时,后面就必须要使用大括号,包住一段语句块。例如以下的:

  public class Abc {// 这个是必须的
	public static void main(String[] args) {// 这个是必须的
		float a = 346.756565f;
		// 这个大括号可以删除
		{
			int b = (int) a + 10; // 将 a 转换为整型
			System.out.println(b);
		}
	}
}


下面我们讲到的条件判断和循环判断的语法是会大量使用到程序块。

判断逻辑是我们生活中最常见的逻辑判断,计算机来执行跟人类思维也是极为类似的:如果[条件成立]就怎样做,否则就那样做。可以这么说,计算机最擅长的就是判断true/false了。

一、if-else 语句

if语句是最常见的判断语句,通过对条件(conditional)的判断觉得程序的走向。其基本格式如下:

if(条件表达式)

    语句1

else

    语句2

在执行该判断语句前,都是先执行了条件表达式的语句,条件表达式的返回结果必须是布尔值(boolean),根据条件表达式的返回,如果是true,那么就执行语句1的内容,如果是false就执行else后面的语句2。如下面这个例子:

  		int  i=1;
		if(i>10)
		  System.out.println(i+"大于10");
		else
		  System.out.println(i+"不大于10");


先定义了整型i并赋值1,然后在执行if里面的条件判断式i是否大于10,返回的结果是false,所以执行的是else后面的语句。

在上面的格式中, else是可选部分,所以最简单的条件判断式如下:

if(条件表达式)

  语句1

如下面这个例子:

  		int  i=1;
		if(i>10)
		   System.out.println(i+"大于10");


由于条件判断是false,所以这个程序不会输出任何内容。也正是因为else是可选部分,在嵌套使用的时候就会出现理解上的问题,有时候我们面对下面这个例子的时候就会感觉不清晰了。

  int i = 1;
if (i > 10)
   if (i < 5)
       System.out.println(i + "小于5");
   else
       System.out.println(i + "不大于10");


else是对应那一个if呢?java是与最近一个if配对的。程序员在写代码时,适当的缩进代码也可以提高代码的可读性,当然我们有更好的解决办法。

if和else后面可以跟着语句,当然也可以跟着语句块,其格式如下:

    if(条件表达式){

       语句块1

     }else{

      语句块2

    }

建议大家在写if语句时,就算后面只有一个语句,也可以使用大括号包住,形成语句块,这样可以提高程序的可读性,如上面的例子,可以修改成为这样:

  if (i > 10) {
    if (i < 5) {
        System.out.println(i + "小于5");
    } else {
        System.out.println(i + "不大于10");
   }
}


二、else-if 语句

有时候条件判断不止两个,可能就需要使用else-if语句了,其语法格式如下:

if(条件表达式)

   语句1

else if(条件表达式)

   语句2

else if(条件表达式)

   语句3

else if(条件表达式)

   语句4

...

else

   语句

这样的语句在我们以后的编程中会经常用到,判断的过程是从上往下的判断条件表达式,如果第一个返回的是false就会判断第二个,依次类推,但是如果其中一个返回了true,那么就会执行后面的语句,然后整个else-if语句就会退出,后面如果还有else-if语句也不会在去判断执行的了。我们常常也会在最后面添加一个else语句,当然这也是可选的,这样的效果就是如果上面的所有的if判断都是false,那么就会执行else后面的语句。像上面的if-else一样,后面也是可以跟着语句块的,为了增强程序的可读性,我们后面也常常会使用语句块。格式如下:

if(条件1){

    条件1==true时执行的逻辑

}else if(条件2){

条件2==true时执行的逻辑

}else if(条件n){

     条件n==true时执行的逻辑

}else{

     以上条件均不满足而执行的默认的逻辑

}

下面我们具几个实现,比如我们要判断用户年龄小于16岁时不允许登陆游戏网站,那么我们可以使用以下代码:

  int uage = 17;
if (uage < 18) {
   System.out.println("Sorry,请关注学业!");
} else {
   System.out.println("欢迎登陆!");
}


又如下面这个例子,根据成绩的分数情况分别输出不同的等级:

  
int result=85;//成绩  
if(result>90){
  System.out.println("优秀");
}else if(result>80){
  System.out.println("良好");
}else if(result>60){
  System.out.println("合格");
}else{
  System.out.println("不合格");
}


if判断也可以嵌套使用,也就是在语句块里也可以包含一个if判断表达式,如下面这个例子。其中Scanner是获得用户输入对象,请看下面这个例子:

  		import java.util.Scanner;
		 public class Tt {
		   public static void main(String[] args) {
		      int num0;//第一个数
		      int num1;//第二个数
		      int type;//计算类型
		 
		      System.out.print("请输入num0: ");
		      Scanner scr = new Scanner(System.in);
		      num0 = scr.nextInt();//程序会在此等待用户的输入
		 
		      System.out.print("请输入num1: ");
		      scr = new Scanner(System.in);
		      num1 = scr.nextInt();
		System.out.print("请输入计算类型(0表示加 ; 1表示减 ; 2表示乘  ; 3表示除): ");
		      scr = new Scanner(System.in);
		      type = scr.nextInt();
		 
		if (type == 0) {
		      System.out.println(num0 + "+" + num1 + " =" + (num0 + num1));
		   } else if (type == 1) {
		      System.out.println(num0 + "-" + num1 + " =" + (num0 - num1));
		   } else if (type == 2) {
		      System.out.println(num0 + "*" + num1 + " =" + (num0 * num1));
		   } else if (type == 3) {
		         // 除法,使用嵌套的if语句判定除数不能为0
		       if (num1 == 0) {
		          System.out.println("除数不能为0");
		      } else {
		          System.out.println(num0+"/"num1+ " =" + (num0 / num1));
		      }
		 
		   } else {
		   // 非法输入
		     System.out.println("您的输入有误!计算类型只能是[0,1,2,3]");
		   }
		   }
		}


在这个程序中用了Scnner获得用户的输入,程序运行到scr.nextInt()的时候会停下来,等待用户的输入,用户输入后按回车程序才会继续往下运行,在程序中我们对除法的判断又嵌套了一个除数不能为0的判断。

三、switch选择语句

switch语句是另一种判断语句的写法,这种语句在选择时是对case子句的值进行相等测试,其功能性其实和if判断语句一样,仅仅只是书写的方式不同,两者之间可以互通,语法上面没有if语句简介。其具体的语法格式如下:

switch(被判断的变量)

{

    case   条件1:

      执行条件1的逻辑

      break;

    case   条件2:

           执行条件1的逻辑

      break;

    case n:

            执行条件n的逻辑

      break;

    default:

      以上条件均不满足而执行的默认的逻辑

}

switch后面的只是被判断的变量,当与case后面的条件相等是,那么case后面的语句就会执行,最后面的default是可选项,可根据你的业务逻辑需要决定是否添加,功能类似else语句,就是上面所有的case条件都不满足时就会执行default后面的语句。

值得注意的是,在JDK 7以前参加被判断的变量的类型只可以是int, byte, char, short等数据类型,但是在JDK 7以后,被判断的变量的类型被增强支持对字符串String的判断。如果你还是使用JDK 6就要特别注意这一点了。

一般来说,switch与case成功匹配,还会继续顺序执行以后所有的程序代码,因此一般都要在判断成功后面添加break语句跳出判断语句块。有关break关键字的详细说明我们会在后面的章节中说明。

看看这个例子:已知变量int month=1,使用switch判断语句,如果month等于1就输出"一月",等于2就输出"二月",如此类推。实现代码如下:

  		int month=4; 
		switch(month){
		      case 1:
		         System.out.println("一月");
		         break;
		      case 2:
		         System.out.println("二月");
		         break;
		      case 3:
		         System.out.println("三月");
		         break;
		      case 4:
		         System.out.println("四月");
		         break;
		           //...中间的5~12用户自己补充。
		      default:
		         System.out.println("month只能是1~12");
		}