• java条件判断


    条件判断

    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");
    }
  • 相关阅读:
    1128项目跟进
    冲刺一 (day 3)
    1118 冲刺1-需求文档(初稿)
    1117 新冲刺 day1
    0622 总结与回顾
    0621 第三次冲刺
    0617 主存空间的分配和回收
    学习进度条
    软件工程学期总结
    学术诚信与职业道德
  • 原文地址:https://www.cnblogs.com/weibanggang/p/11184550.html
Copyright © 2020-2023  润新知