2 qq 34081024 qq_34081024 于 2016.03.08 19:52 提问

刚刚做的学生管理系统姓名查询环节只能查到第一个姓名,剩下的都查不到

import java.util.Scanner;

public class Score {
public static void main(String[] args) {
// 保存学生姓名
String [] names = new String [5];
// 保存成绩
double[] scores = new double[names.length];
// 导航
System.out.println("");
System.out.println("*****欢迎进入学生信息管理系统*****");
System.out.println("");
System.out.println(" *****1、 姓名录入 *****");
System.out.println(" *****2、 成绩录入 *****");
System.out.println(" *****3、 查询所有 *****");
System.out.println(" *****4、 按名字查询 *****");
System.out.println(" *****5、 修改成绩 *****");
System.out.println(" *****6、删除学生信息*****");
System.out.println(" *****0、 退出 *****");
System.out.println("");
System.out.println("请输入您要选择的模块序号:");
// 用户选择
Scanner mySc = new Scanner(System.in);
int xuanze = mySc.nextInt();
while (xuanze > 0) {
switch (xuanze) {
// 姓名录入
case 1:
System.out.println("欢迎进入姓名录入系统");
for (int i = 0 ; i < names.length ; i ++) {
System.out.println("请录入第" + (i + 1) + "个学生的姓名:");
names[i] = mySc.next();
}
System.out.println("姓名录入成功!");
break;
// 成绩录入
case 2:
System.out.println("欢迎进入成绩录入系统");
for (int i = 0; i < names.length; i++) {
System.out.println("学生姓名:" + names[i]);
System.out.println("请录入该同学的成绩:");
scores[i] = mySc.nextDouble();
}
System.out.println("成绩录入成功!");
break;
// 查询所有
case 3:
double sum = 0;
for (int i = 0; i < names.length; i++) {
sum = sum + scores[i];
}
System.out.println("本班共有" + names.length + "名学生,平均成绩为:" + sum
/ names.length + "分"); // 求平均成绩
for (int j = 0; j < names.length; j++) {
System.out.println(names[j] + ":" + scores[j]);
}
break;
// 按名字查询
case 4:
boolean flag = true;
while (flag == true) {
System.out.println("请输入学生姓名:");
String name = mySc.next();
for (int i = 0; i < names.length; i++) {
if (name.equals(names[i])) {
System.out.println(name + "的成绩是:" + scores[i]+ "分。");
break;
} else {
System.out.println("您想查询的名字不在查找范围内,请核对后再输入!");
flag = true;
break;
}
}
System.out.println("是否继续查询(按 “ Y ” 继续,其余任意键退出)?"); // 一次查询结束,判断是否继续这一环节
String panduan = mySc.next();
if (panduan.equals("y") || panduan.equals("Y")) { // 继续这一环节
flag = true;
} else { // 按任意键退出这一环节
System.out.println("您已退出姓名查询环节!");
break;
}
// else {
// System.out.println("输入有误,请重新输入!");
//
// }
}
break;
// 修改成绩
case 5:
System.out.println("请输入学生姓名:");
String name1 = mySc.next();
for (int i = 0; i < names.length; i++) {
System.out.println("请录入新成绩:");
scores[i] = mySc.nextDouble();
break;
}
System.out.println("成绩修改成功!");
break;
// 删除学生信息
case 6:
System.out.println("请输入将要删除的学生姓名:");
String name2 = mySc.next();
System.out.println("确认删除该学生(Y / N)?");
String xuanze1 = mySc.next();
if (xuanze1.equals("y") || xuanze1.equals("Y")) { // 再次提醒用户,防止误删
for (int i = 0; i < names.length; i++) {
names[i] = names[i + names.length - 1]; // 将要删除的姓名放到数组最后面
scores[i] = scores[i + names.length - 1]; // 将要删除的分数放到数组最后面
names[i + names.length - 1] = " "; // 名字清空
scores[i + names.length - 1] = 0; // 分数清空为0
break;
}
System.out.println("删除成功!");
break;
} else if (xuanze1.equals("n") || xuanze1.equals("N")) { // 取消删除
break;
} else {
System.out.println("输入有误,请重新输入!");
break;
}
default:
System.out.println("输入有误,请重新输入:");
break;
}
System.out.println("");
System.out.println("*****欢迎进入学生信息管理系统*****");
System.out.println("");
System.out.println(" *****1、 姓名录入 *****");
System.out.println(" *****2、 成绩录入 *****");
System.out.println(" *****3、 查询所有 *****");
System.out.println(" *****4、 按名字查询 *****");
System.out.println(" *****5、 修改成绩 *****");
System.out.println(" *****6、删除学生信息*****");
System.out.println(" *****0、 退出 *****");
System.out.println("");
System.out.println("请输入您要选择的模块序号:");
// 用户选择
xuanze = mySc.nextInt();
}
System.out.println("程序退出!"); // 退出
}
}
图片说明

2个回答

tianyaleixiaowu
tianyaleixiaowu   2016.03.09 11:53
已采纳

在你的case 4,那个for循环里有逻辑错误,
if (name.equals(names[i])) {
System.out.println(name + "的成绩是:" + scores[i] + "分。");
break;
} else {
System.out.println("您想查询的名字不在查找范围内,请核对后再输入!");
flag = true;
break;
}
你的if判断是如果第一个name不等于输入的,就走else了,这肯定是不对的。你应该把循环走完才能下判断。改成下面的图片说明

qq_34081024
qq_34081024 谢谢
接近 2 年之前 回复
qq_27564553
qq_27564553   2016.03.09 11:49

帮你看了一下没看出什么问题,你打个断点name那,看看name里面是什么值。另外你的代码写得真乱,添好缩进,在这里贴代码的时候建议放到

 这里

方便别人阅读你的代码

qq_34081024
qq_34081024 谢谢
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!