3、选择结构
3、1基本的选择结构
public static void main(String[] args) {
Scanner input = new Scanner(System.ln);
System.out.println("请录入成绩");
int iNow = input.nextInt();
if(iNow>90){
System.out.println("成绩不错,奖励");
}
}
3、2使用逻辑运算符的选择结构
Scanner input = new Scanner(System.ln);
System.out.println("请录入Java成绩");
int iJava = input.nextInt();
System.out.println("请录入音乐成绩");
int iMusic = input.nextInt();
// 如果Java成绩大于90,且音乐成绩大于80,
// 或者,Java等于100且音乐大于70
if(iJava>90&&iMusic>80||iJava==100&&iMusic>70) {
System.out.println("成绩不错,奖励");
}
3、3如果-否则(if-else)
Scanner input = new Scanner(System.in);
System.out.println("录入成绩:");
int iNow = input.nextInt();
if(iNow>90){
System.out.println("成绩不错奖励");
}else{
System.out.println("惩罚");
}
// 使用三目运算符改写
String flag = iNow>90?"成绩不错奖励":"惩罚";
3、4如果-否则 如果-否则(if-else if-else)
Scanner input = new Scanner(System.in);
System.out.println("录入成绩");
int iNow = input.nextInt();
String flag="";
if(iNow>=80){
flag="良好";
}else if(iNow>=60){
flag="中等";
}else {
flag="差";
}
// 也可以用三目运算符,但是不推荐在三目运算符中嵌套三目运算符,会使得代码不好阅读
flag=iNow>=80?"良好":iNow>=60?"中等":"差";
System.out.println("你成绩为:"+iNow+"等第为:"+flag);
}
3、5多重条件嵌套
String sName = "";
String sSex = "";
double dTime = 0.0;
Scanner input = new Scanner(System.in);
System.out.println("名字");
sName = input.next();
System.out.println("性别");
sSex = input.next();
System.out.println("时间");
dTime = input.nextDouble();
String sReult = sName+"很遗憾,你没进10s,无缘决赛";
if(dTime<10){
sReult = sName+"恭喜,决赛";
if ("男".equals(sSex)){
sReult+="男子决赛";
}else if ("女".equals(sSex)){
sReult+="女子决赛";
}else{
sReult+="未知组决赛";
}
}
System.out.println(sReult);
4、字符串的比较
字符串比较我们不使用==,而是使用equals,==比较的是基本数据类型,比如int、double等
// 某些情况下有可能某个对象为空
String sName = null;
// 当使用null对象去调用方法时,会出现Null Pointer Exception(空指针异常)
// 所以我们在执行字符串的equals方法时,我们肯定要将不会空的结果放在前面
// 比如一个字面量,和一个变量,那么肯定是字面量在前
// 如果一个自己赋值的A和一个从某个方法获得的B,那肯定A放在前面,笔记自己赋值的肯定不会为空
System.out.println("123".equals(sName));
System.out.println(sName.equals("123"));
5、switch
Scanner input = new Scanner(System.in);
System.out.println("比赛名次:");
int iNow = input.nextInt();
switch (iNow){
// 只有所有的case都匹配不上,才进入default
// default虽然位置没有要求,但习惯性加在所有case的后面
default:
System.out.println("no名次,no奖励");
break;//如果break不存在,则会继续执行他后面case的内容,加不加break,看具体情况
case 1:
System.out.println("一等奖夏令营");
break;
case 2:
System.out.println("二等奖笔记本");
break;
case 3:
System.out.println("U盘");
break;
}
举一个不需要break的例子
Scanner input = new Scanner(System.in);
System.out.println("请问现在几点,请输入20-23");
int iNow = input.nextInt();
int iTemp=0;
switch (iNow){
case 20:
iTemp++;
case 21:
iTemp++;
case 22:
iTemp++;
case 23:
iTemp++;
}
System.out.println("再过"+iTemp+"小时,就24点");
}
6、局部变量
public static void main(String[] args) {
int i = 100;
if (i>10){
// 此时的j是if代码块中的局部变量,无法在if模块以外使用(作用范围在-行)
int j = 2;
System.out.println(j);
}
// i是在main方法中声明的,所以所有main方法中的代码都可以使用或者修改i变量
System.out.println(i);
// 因为j在if模块中被声明,所以只能作用的if模块中,下面会由于变量j未声明而报错
j=100;
System.out.println(j);