继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java 学习日志 2.1 if else switch 四种方法检验各种运算符)

玄鉴
关注TA
已关注
手记 96
粉丝 237
获赞 4217

Java 学习日志 2.1 if 条件判断选择语句

任何一门知识的建立都是在原有知识的基础上开发建立的。
Java继承发扬C++,C++继承发扬C语言,C语言继承发扬B语言,B语言继承发扬汇编语言,汇编语言又是建立在数学的分支上。

所以编程语言有很多数学基础。数学学得好,特别是数据结构与算法学的好,更加有助于学习精深编程。

同样我们的说话中也包含了很多逻辑数学知识。
就比如if条件判断语句。
如果(怎么怎么样)则{怎么怎么样;}否则{怎么怎么样;}
If(条件判断){为真则表达式1}else{为假则表达式2}。
又因为世上的情况不止一两种,所以进一步:
If(条件判断1){为真则表达式1}
else if(条件判断2){为真则表达式2}
else if(条件判断3){为真则表达式3}
else if(条件判断4){为真则表达式4}
……
else if(条件判断n){为真则表达式n}
else{剩余所有情况下执行则表达式n+1}。

图片描述

代码:

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    System.out.println("请输入成绩:");
    int score = in.nextInt();
    if (score > 100 || score < 0) {
        System.out.println("成绩输入有误,请重新输入");
    }
    if (score >= 90 && score <= 100) {
        System.out.println("优秀");
    }
    if (score >= 80 && score < 90) {
        System.out.println("良好");
    }
    if (score >= 60 && score < 80) {
        System.out.println("及格");
}
    if ( score >= 0&&score < 60) {
        System.out.println("不及格");

可以简化为

       if(){   }else if()  {   } else{    };

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    System.out.println("请输入成绩:");
    int score = in.nextInt();
    if (score > 100 || score < 0) {
        System.out.println("成绩输入有误,请重新输入");}
    else if(score >= 90 ) {
            System.out.println("优秀");
    }
    else if (score >= 80 ) {
        System.out.println("良好");
    }
    else if (score >= 60 ) {
        System.out.println("及格");
    }
    else if ( score >= 0) {
        System.out.println("不及格");
}

}

我们还可以继续简化。等号“=”相当于特殊的大于>小于<情况。
如果及格不同的区间转化为几个不同的特定取值。也就是将大小区间转化为等于。
100=>A>=90。这一区间用A代替。
如果等于A,则优秀。
int a=(int)A/10;//则a=9or10.

90>A>=80
int a=(int)A/10;//a=8

80>A>=70
int a=(int)A/10;//a=7

70>A>=60
int a=(int)A/10;//a=6

代码如下:
public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    System.out.println("请输入成绩:");
    int score = in.nextInt();
    int a = (int) score / 10;

    if (a > 10 || a < 0) {
        System.out.println("成绩输入有误,请重新输入");
    }
    if (a == 10 | a == 9) {
        System.out.println("优秀");
    } else if (a == 8) {
        System.out.println("良好");

    } else if (a == 7 || a == 6) {
        System.out.println("及格");

    } else if (a>=0&&a<6) {

        System.out.println("不及格");

    }

}

//这里面有一个bug,不知道大家注意到没有。我也不知道怎么解决,看到家能否找到。提示一下:是负数取值区间的。

对于这种特殊的情况。

Java里面用了另外一个语法来定义。那就是switch(条件){
case a:执行表达式
break;
case b:
break;
case c:
break;
}

//Switch()就是if的判断表达式。Case就是判断的结果。注意a 可以使是整形数int 也可以是字符char。声明变量的时候要注意。后面接着执行的表达式。再接着就是break。相当于原来的if改为else if。就是确定区间,执行条件范围。只执行这一段程序,遇见则退出,不再执行其他的程序。
代码如下:
public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    System.out.println("请输入成绩:");
    int score = in.nextInt();
    int a = (int) score / 10;

    switch (score / 10) {
    case 10:
    case 9:
        System.out.println("优秀");
        break;
    case 8:
        System.out.println("良好");
        break;
    case 7:
    case 6:
        System.out.println("及格");
        break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:
        System.out.println("不及格");
        break;
    default:
        System.out.println("成绩输入有误,请重新输入");
    }
}

//这样一来代码更加简化了,而且可以用于等于==这种特殊的情况。不过负数取值区间的bug仍然存在。我还是无法解决。
希望大家能帮我解决它。谢谢。

例外值得注意的是if是判断语句只有boolean类型。
而switch是int或者char类型。已经暗含==和equals的意思。
也就是switch(*)如果==或者equals case 1:则执行后面的语句。
==一般比较数值int类型。
equals一般比较字符char类型。

再提一点的if(){ }else{ }。
也可以简化为:

条件判断? 表达式1:表达式2

如果条件判断为真,则执行左边的表达式,如果为假,则执行右边的表达式。

这里值得注意的只有?问号和:冒号。
是为条件运算符。也叫三目三元运算符。
char x = 'X';
int i = 0;
System.Console.Write(true ? x : 0);
System.Console.Write(false ? i : x);

z

打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP