deilele 2023-01-07 16:36 采纳率: 100%
浏览 28
已结题

Java使用嵌套分支判断

问题遇到的现象和发生背景

java使用嵌套分支判断解决
参加歌手比赛,如果初赛成绩大于0.8进决赛,否则提示淘汰。并根据性别提示进入男子组或女子组。输入成绩和性别,进行判断和输出信息。

遇到的现象和发生背景

为了能够判断输入的初赛成绩是否在0~1.0范围内,且能够判断成绩是否>0.8,并进行男女分组。为了防止嵌套过多,因此使用了if-else的外层嵌套来判断成绩范围,并使用if - if else - else的多分支处理作为内层嵌套。
但是输入性别女,成绩0.9,提示出来的结果是"不要气馁,希望未来能见到更棒的你!"的淘汰提示,同时,为了检查是否是gender的char输入问题,发现输出gender后发现显示的是"?"
编译没有报错

img

代码

//参加歌手比赛,如果初赛成绩大于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
?
不要气馁,希望未来能见到更棒的你!

img

我的解答思路和尝试过的方法

我理解的是: 输入:女 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。其他地方中文可以显示。

请多多指教!

  • 写回答

1条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-01-07 16:49
    关注
    • 中文用一个字符char【ascii码里可没有中文】可接受不了,你要用 字符串String接收
    • 另外后面字符串比较要用equals
    String gender = mySbanner.next();
    // 比较
    "女".equals(gender)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月7日

悬赏问题

  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败