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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
利用工行在线缴费查本地任意手机号、固定电话属主姓名。
        前段时间手机丢了,虽然到移动把号找回来了,但通讯录都没了。忽然想到工行的在线缴费可以查机主姓名。于是就登陆移动的网上营业大厅,把最近的通话记录导出来,再到工行的网上银行把号码对应的姓名查出来,经常联系的一些号就找回来了。下面通过解图来演示下: 1、       2、       3、       4、       5、      
Linq to XML:查询不到数据的问题
今天在调试对XML进行查询数据时,发现查找到的数据总是为零。 后来通过在网上查找资料,发现了一个不错的学习LinqtoXml的网站:https://msdn.microsoft.com/zh-cn/library/mt693116.aspx,也正是通过对该例子的分析查找到了问题所在。 举个例子: XML文件: Convert number to string
用一条SQL语句查出每门课都大于80分的学生的姓名
用一条SQL语句查出每门课都大于80分的学生的姓名,数据表结构如下:建表SQL如下:SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for grade -- ---------------------------- DROP TABLE IF EXISTS `grade`; CREATE T...
学生管理系统的设计与实现 - 顺序表
注:实验用书为 数据结构 C语言版 第2版,人民邮电出版社出版。 实验题目:学生管理系统的设计与实现 实验环境:Visual C++ 6.0或其他C++环境 一、实验目的 1、掌握重要的排序算法――直接插入排序和快速排序; 2、掌握折半查找算法。 3、综合运用所学数据结构知识,提高解决实际问题的能力。 二、实验内容 设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成
查询每门课程都大于80分的学生姓名
name cource score 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 ...
学生管理系统(C++,控制台,文件读取,姓名排序)
这是一个用C++写的控制台程序,利用简单的菜单实现学生信息的管理。简图如下所示: 菜单栏: 查询数据: 修改数据: 打印数据: 以下是添加了一些学生信息的进行一些操作的结果: 除了上面所展示的功能以外,还可以将所有的学生信息保存到一个txt文件中,或者将一个文件里面的学生信息读取进来,当
检查姓名/身份证/银行卡/s
import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.sf.json.JS
用一条SQL语句 查询出每门课都大于80分的学生姓名
用一条SQL语句 查询出每门课都大于80分的学生姓名   name   kecheng   fenshu  张三     语文            81 张三     数学            75 李四     语文            76 李四     数学            90 王五     语文            81
查询学生姓名、所属年级及电话
-- 查询学生姓名、所属年级及电话 select *from Student select *from dbo.Grade --where select  s.StudentName 姓名, g.GradeName 年级名称, s.Phone   from Student s, Grade g where s.GradeId=g.GradeId --inner join ..on s
Java写学生管理系统
package Homework08; /* Student stus[]=new Student[2];  for (int i=0;i  stus[i]=new Student();应该写在循环外面,否则每次都被初始化。 } */ import java.util.Scanner; public class Main {  public static void