import java.io.InputStream;
import java.io.PrintStream;
import java.util.Scanner;
/**
* java中的三种判断(分支)语句 : if、case、三目。
* 还在用单一方法判断奇偶吗?使用java中的三种判断分支语句(if、case、三目) 判断奇偶。
* if和case的效率问题:
* 要看你具体的需求,就好像是判断分数,120分的卷,50以下是D,51-71是C,72-95是B,96-120是A的话,那么这种情况就选用if else比较合适,
* 如果是反过来通过评级输出分数段就是switch比较合适了。
* if分支越多效率越低,switch case则不用,它会直接进入相应的分支,省去了判断环节,如果没有相应的分支,只会进入default。但是switch case使用范围比if else小。
*
* @author FFrog
*
*/
public class Judges {
private static InputStream ips = System.in;
private static int num = new Scanner(ips).nextInt();
private static PrintStream out = System.out;
/**
* if(boolen){}
* if(boolen){}else{}
* if(boolen){}else if(boolean){}else{}
*/
public static void oneMethod() {
// 已经在监听输入的num了,没有输入的时候不走这里
out.println("请输 入一个整数:");
// java中“取余符号%”和“除号/”是不同的,“%取余”
// 能被2整除的数是偶数(包括正偶数和负偶数),所以0是偶数,0不能做除数,同时0有个特殊的功能,可以把正偶数和负偶数区分开。
// 被2除有余数(不能被2整除)的是奇数。
if (num % 2 == 0) {
out.println("if运算结果:"+num + "这个数是偶数");
} else {
out.println("if运算结果:"+num + "这个数是奇数");
}
}
/**
* switch(int/String){case1:xx:;break;case2:xx:;case3:xx;default:xx;} default可定义也可不定义。
* 每一个case都是一个分支,就像一个开关,相当于一个方法体:相当于case空格[int/String]:{xx}方法体。eg:case2和case3都执行的话,省去break;
*/
public static void twoMethod() {
boolean bln = num % 2 == 0;
int flag = 0;
if (bln == true && num > 0) {
// 正偶数
flag = 2;
} else if (bln == true && num < 0) {
// 负偶数
flag = -2;
} else if (bln == true && num == 0) {
// 偶数0
flag = 0;
} else if (bln == false && num > 0) {
// 正奇数
flag = 1;
} else {
// 负奇数
flag = -1;
}
// Cannot switch on a value of type long/boolean. Only convertible int values, strings or enum variables are permitted
switch (flag) {
case 2:
out.println("case运算结果:"+num + "是正偶数");
break;
case -2:
out.println("case运算结果:"+num + "是负偶数");
break;
case 0:
out.println("case运算结果:"+num + "是偶数");
break;
case 1:
out.println("case运算结果:"+num + "是正奇数");
break;
case -1:
out.println("case运算结果:"+num + "是负奇数");
break;
}
}
/**
* 三目(三元)运算。 条件/表达式?结果1:结果2; 条件/表达式为true时,返回结果1;条件/表达式为false时返回结果2。
*/
public static void threeMethod(){
String smStrFlag = "0";
if (num % 2==0)
//奇数
smStrFlag = "2";
else
//偶数
smStrFlag = "1";
//"=="比较的是两个字符串的地址是否为相等(同一个地址),equals()方法比较的是两个字符串对象的内容是否相同(当然,若两个字符串引用同一个地址,使用equals()比较也返回true)。
这里需要变量接一下子
String result = (smStrFlag.equals(smStrFlag)) ? "偶数":"奇数";
out.println("三目运算结果:"+num+"这个数是"+result);
}
public static void main(String[] args) {
oneMethod();//0 请输 入一个整数: if运算结果:0这个数是偶数
twoMethod();//case运算结果:0是偶数
threeMethod();//三目运算结果:0这个数是偶数
}
}