可能是你上面输入成绩的nextDouble()有回车残留,下面的next()读取到的第一个字符是回车。试着在nextDouble()下面加一个nextLine()来接受这个可能存在的回车残留,然后再输入next()。
打个断点看 你输入的是啥玩意儿就知道了
这个语句是没有语法和逻辑错误的,可能是你输入的问题,你可以加个输入输出
charAt(0)是去字符串的第一个字符,如果输入的时候有空格就会识别为空,就会走else,保险的话可以多加一个else if 为女的情况