手记

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

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

3人推荐
随时随地看视频
慕课网APP