对于一个班级项目,我应该制作一个四年级的成绩簿:Main(只运行成绩册),成绩簿(包括我将使用的所有方法,如添加学生,删除学生,添加作业等),学生(将保留学生的姓名,号码,电子邮件)和作业(包含所有作业详细信息)。我的导师编写了大部分代码设计,他让我们编写辅助方法,找到特定的学生和作业并返回一个布尔值。我需要这些辅助方法,但我不知道如何编写它以便我可以使用他们找到的学生或作业(即如何在帮助方法找到学生之后移除学生?)。我的所有学生和作业都在不同的阵列中(不是数组列表或其他任何内容,按照他的指示)如果还有其他方式而没有返回类型作为布尔值,我想我能够改变回报类型也是如此。
这是我的助手方法:
private boolean findStd (String stdName)
{
boolean thing = false;
for(int i = 0; i < students.length; i++)
{
if(stdName.equalsIgnoreCase(students[i].studentName))
{
thing = true;
}
}
return thing;
}
现在是我的removeStudent方法:
private boolean removeStudent()
{
String name = JOptionPane.showInputDialog("What's the student's name (last, first)?");
findStd(name);
return false;
} // delete student from list
答案 0 :(得分:0)
假设学生名称存储为“last,first”,那么您只需要遍历数组,并在找到正确的学生后删除它:
for (int i = 0; i < students.length; i++) {
if (students[i].studentName.equalsIgnoreCase(name)) {
// delete student, e.g. students[i] = null;
}
}
其中name是JOptionPane的结果。
答案 1 :(得分:0)
你找到和删除的逻辑似乎已经消失了。为了从一个阵列中移除一个学生你想要做几件事
试试这个:
//Change the method for find to return the index, but returns -1
// if the name isn't found which can be used to let a caller of
// the function know that it does not exist as I will show in the removeStudent()
private int findStd (String stdName)
{
int indexOfStudent = -1;
for(int i = 0; i < students.length; i++)
{
if(stdName.equalsIgnoreCase(students[i].studentName))
{
indexOfStudent = i;
break;
}
}
//now we will either return a valid index or -1
return indexOfStudent;
}
private boolean removeStudent()
{
String name = JOptionPane.showInputDialog("What's the student's name (last, first)?");
//if the name exists then our findStd() will give us the index
int indexToRemove = findStd(name);
if(indexToRemove != -1)
{
students[indexToRemove] = null;
return true;
}
return false;
}
答案 2 :(得分:0)
有多种方法可以从数组中“删除”元素。这取决于“删除”的含义。
您可以将null
指定给要删除的元素位置的数组。
问题:您现在在数组中有null
个值,其余代码必须处理它。
您可以使用循环(或实用程序方法)复制剩余的元素以填充已删除元素留下的“洞”。
问题:现在您在右端有一个“洞”(即空值)。您的代码需要处理您的概念数组小于实际数组长度的事实; e.g。
for(int i = 0; i < students.length /** <<== wrong */ ; i++)
您可以创建一个具有正确大小的新数组,并将元素复制到它...使用一个或两个循环,或调用实用程序方法。
问题:您现在需要更新您对原始数组有引用的所有地方。
您可以使用List
而不是数组。 List
API提供了删除元素的操作。
问题:您可能无法更改students
的声明。
在上面的描述中应该有足够的信息来告诉你代码需要做什么......在每种情况下。