标签:
任何一门知识的简历都是在原有知识的基础上开发建立的。
Java继承发扬C++,C++继承发扬C语言,C语言继承发扬B语言,B语言继承发扬汇编语言,汇编语言又是建立在数学的分支上。
所以编程语言有很多数学基础。数学学得好,特别是数据结构与算法学的好,更加有助于学习精深编程。
同样我们的说话中也包含了很多逻辑数学知识。
就比如if条件判断语句。
如果(怎么怎么样)则{怎么怎么样;}否则{怎么怎么样;}
If(条件判断){为真则表达式1}else{为假则表达式2}。
又因为世上的情况不止一两种,所以进一步:
If(条件判断){为真则表达式1}
else if(条件判断){为真则表达式2}
else if(条件判断){为真则表达式3}
else if(条件判断){为真则表达式3}
……
else if(条件判断){为真则表达式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 是整形数字。后面接着执行的表达式。再接着就是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仍然存在。我还是无法解决。
希望大家能帮我解决它。谢谢。
任何一门知识的简历都是在原有知识的基础上开发建立的。 Java继承发扬C++,C++继承发扬C语言,C语言继承发扬B语言,B语言继承发扬汇编语言,汇编语言又是建立在数学的分支上。 所以编程语言有很多数学基础。数学学得好,特别是数据结构与算法学的好,更加有助于学习精深编程。 同样我们的说话中也包含了很多逻辑数学知识。 就比如if条件判断语句。 如果(怎么怎么样)则{怎么怎么样;}否则{怎么怎么样;} If(条件判断){为真则表达式1}else{为假则表达式2}。 又因为世上的情况不止一两种,所以进一步: If(条件判断){为真则表达式1} else if(条件判断){为真则表达式2} else if(条件判断){为真则表达式3} else if(条件判断){为真则表达式3} …… else if(条件判断){为真则表达式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 是整形数字。后面接着执行的表达式。再接着就是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仍然存在。我还是无法解决。 希望大家能帮我解决它。谢谢。 JAVA
作者: 玄鉴
链接:http://www.imooc.com/article/7477
来源:慕课网
Java 学习日志 2.1 if 条件选择语句(if switch 四种方法检验成绩状况)
标签:
原文地址:http://www.cnblogs.com/jingtianzhi/p/5477353.html