不畏将来123 2016-03-08 11:52 采纳率: 33.3%
浏览 1537
已采纳

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

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条回答

  • 天涯泪小武 博客专家认证 2016-03-09 03: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了,这肯定是不对的。你应该把循环走完才能下判断。改成下面的图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题