该Java程序出错出在哪里?为什么?

importjava.util.*;publicclassMessage{publicstaticvoidmain(String[]args){//TODOAuto-ge... import java.util.*;
public class Message {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("****************************");
System.out.println("* 学生成绩管理系统 *");
System.out.println("============================");
System.out.println("* 1、输入学生成绩 *");
System.out.println("* 2、输入学生成绩 *");
System.out.println("* 0、执行退出程序 *");
System.out.println("*提示:输入数字,选择菜单功能*");
System.out.println("****************************");
Scanner in = new Scanner(System.in);
System.out.println("请输入菜单选项:");
int No=in.nextInt();
System.out.println("请输入学生人数:");
int number=in.nextInt();
String []stu_name = new String [number];
float [][]stu_chengji=new float [number] [3];
if(No==0){
System.out.println("谢谢,再见!");}
else if(No==1){

for(int i = 0; i< number; i++){
System.out.println("请输入下一个同学的成绩,格式:张小强,90,95,89");
System.out.println("姓名 语文 数学 英语");
String messages=in.nextLine();
String stu_items[] = messages.split("[,]");
stu_name[i] = stu_items[0];
for(int j= 0;j<3;j++){
stu_chengji[i][j]=Float.parseFloat(stu_items[j+1]); } }
System.out.println("成绩输入完毕!");
}else if(No==2){
System.out.println("姓名 语文 数学 英语 总成绩 平均成绩");
for (int i = 0;i<number ;i++){
System.out.printf("%c,%7.2f,%7.2f,%7.2f,%7.2f,%7.2f\n",stu_name[i],stu_chengji[i][i],stu_chengji[i][i+1],stu_chengji[i][i+2],(stu_chengji[i][i+0]+stu_chengji[i][i+1]+stu_chengji[i][i+2]),(stu_chengji[i][i+0]+stu_chengji[i][i+1]+stu_chengji[i][i+2])/3);}
System.out.println("成绩输出完毕!");
}else{ System.out.println("请按说明进行操作!谢谢合作!");
} } }
为何又报上面这行错误呢?
展开
 我来答
匿名用户
2014-03-21
展开全部
next() 从一行中扫描,直到碰到特定的标识符:空格或是换行符(\n),获取其前的字符(串)。
它没有处理回车所带来的"\n",与nextLine()方法连用的话,nextLine()看见“\n”就收了,然后扫描了 \n 之前的内容,也就是空字符串,于是出现问题了。把nextLine()换成next();.或者在循环中使用nextLine(),直到nextLine()接受的内容不是"\n"
中中
2014-03-21
知道答主
回答量:35
采纳率:0%
帮助的人:10.6万
展开全部
int number = in.nextInt();
in.nextLine();
String[] stu_name = new String[number];
因为有回车,所以加入上面第二行。以下是测试结果:
****************************
* 学生成绩管理系统 *
============================
* 1、输入学生成绩 *
* 2、输入学生成绩 *
* 0、执行退出程序 *
*提示:输入数字,选择菜单功能*
****************************
请输入菜单选项:
1
请输入学生人数:
1
请输入下一个同学的成绩,格式:张小强,90,95,89
姓名 语文 数学 英语
a,1,1,1
成绩输入完毕!

请关注www.highersoft.net
更多追问追答
追问
还是不行呢,你这不是 让从键盘上敲入两户数字吗?
追答
请注意输入法的中/英符号,我发现你的代码逗号有中文的.数字也会分中英文
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友da38773
2014-03-21 · 超过29用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:71.6万
展开全部
String messages=in.nextLine();这里,这个方法不等你输入,直接得到"".

用String messages = in.next();试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韵蓝玉梦
2014-03-21 · 超过14用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:34万
展开全部
String messages=in.nextLine();这句没有等待收入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友225c92d
2014-03-21
知道答主
回答量:47
采纳率:50%
帮助的人:16.7万
展开全部
stu_chengji[i][j]=Float.parseFloat(stu_items[j+1]); } }
这里应该不用加1的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式