问题遇到的现象和发生背景
java使用嵌套分支判断解决
参加歌手比赛,如果初赛成绩大于0.8进决赛,否则提示淘汰。并根据性别提示进入男子组或女子组。输入成绩和性别,进行判断和输出信息。
遇到的现象和发生背景
为了能够判断输入的初赛成绩是否在0~1.0范围内,且能够判断成绩是否>0.8,并进行男女分组。为了防止嵌套过多,因此使用了if-else的外层嵌套来判断成绩范围,并使用if - if else - else的多分支处理作为内层嵌套。
但是输入性别女,成绩0.9,提示出来的结果是"不要气馁,希望未来能见到更棒的你!"的淘汰提示,同时,为了检查是否是gender的char输入问题,发现输出gender后发现显示的是"?"
编译没有报错
代码
//参加歌手比赛,如果初赛成绩大于8.0进决赛,否则提示淘汰。
//并根据性别提示进入男子组或女子组
//输入成绩和性别,进行判断和输出信息
import java.util.Scanner;
public class NestedIf {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入性别:");
//接收字符,就是先接收字符串,再提取字符串的第0个字符
char gender = myScanner.next().charAt(0);
System.out.println("请输入初赛成绩(0~1.0):");
double score = myScanner.nextDouble();
System.out.println(gender + "");//输出gender,看有没有可能是gender读取的问题
//外层嵌套 if - else 用于判断成绩的有效性;
//内层嵌套 if - else if - else 这是防止嵌套过多的无奈之举
//判断成绩和性别,发送不同信息
if(score <= 1.0 && score >= 0) {
if(score > 0.8 && gender == '男') {
System.out.println("恭喜您!进入男子组复赛");
} else if(score > 0.8 && gender == '女') {
System.out.println("恭喜您!进入女子组复赛");
} else {
System.out.println("不要气馁,希望未来能见到更棒的你!");
}
}
else {System.out.println("成绩范围为0~1.0,请您检查");
}
}
}
运行结果及详细报错内容
F:\Javacode\Chapter05>java NestedIf
请输入性别:
女
请输入初赛成绩(0~1.0):
0.9
?
不要气馁,希望未来能见到更棒的你!
我的解答思路和尝试过的方法
我理解的是: 输入:女 0.9
if(score <= 1.0 && score >= 0) 0.9符合,true
进入嵌套的多分支判断,if(score > 0.8 && gender == '男') 不符合,false
接着判断,else if(score > 0.8 && gender == '女') 符合,true,输出"恭喜您!进入女子组复赛"
跳出内层,跳出外层,代码结束
不知道问题到底出在哪里了?而且为什么输出gender显示不了中文呢?
char+ ""以字符串形式输出也是问号。dos系统运行,save with Encoding UTF-8。其他地方中文可以显示。
请多多指教!