我的java程序只按顺序执行操作

我的java程序只按顺序执行操作,java,loops,if-statement,for-loop,Java,Loops,If Statement,For Loop,我的程序中有以下代码: public static void remove(int studentID) { for (int i = 0; i < students.length; i++) { if (roster.get(i).getStudentID()==studentID) { System.out.println("Student with Student

我的程序中有以下代码:

public static void remove(int studentID)
    {
        for (int i = 0; i < students.length; i++)
        {
            if (roster.get(i).getStudentID()==studentID)
            {
                System.out.println("Student with Student ID of: " + studentID + " has been removed!");
                roster.remove(i);
                return;
            }
            else
            {
               System.out.println("Student with Student ID of: " + studentID + " could not be found! No action taken! ");
               return;
            }
        }
    }
publicstaticvoidremove(int-studentID)
{
for(int i=0;i
一切似乎都编译得很好,但当我执行花名册.remove时,我只能从数组列表中顺序删除一个ID。我的数组中有5个列表,如果我从1到5运行remove方法,它就会工作。然而,如果我从一个数字开始,比如说2,我的循环就找不到ID并且失败了

作为Java的新手,我知道这可能是一个简单的问题,我只是需要帮助。我的头撞在键盘上对这个问题没有任何价值


非常感谢您的帮助

从else块中删除return语句。

从else子句中删除return语句。它使i++成为死代码。我希望,这就是你想要做的

public static void remove(int studentID)
{
    for (int i = 0; i < students.length; i++)
    {
        if (roster.get(i).getStudentID()==studentID)
        {
            System.out.println("Student with Student ID of: " + studentID + " has been removed!");
            roster.remove(i);
            return;
        }
    }

    System.out.println("Student with Student ID of: " + studentID + " could not be found! No action taken! ");
}
publicstaticvoidremove(int-studentID)
{
for(int i=0;i
谢谢,我真不敢相信我错过了退货!嗯,现在我觉得自己像个真正的傻瓜

如果有人对我的代码的结果感到好奇,我使用花名册.size()作为我的计数。我还删除了整个else语句,并将“notfound”println放在for循环的外部,将中断保留在if语句中


感谢你们所有人的快速和非常有用的回答

这可能不是问题所在,但为什么您要检查循环中的
学生。长度
,但从
名册中删除?您正在迭代
学生
,但在
名册中查找和删除
-这是有意的吗?我们真的需要知道这些类型是什么。为什么在
if-else
语句的每个部分都有两个
return
语句?这意味着迭代将在1步后中断。请避免删除内部循环,并使用集合或数组长度进行迭代以避免越界异常