正确调用方法:(Java)

时间:2012-03-27 15:22:28

标签: java

  

创建一个名为getNextProjectIndex()的方法,该方法返回一个int   获取包含-1.0的projects数组的下一个索引。找   projects数组中包含-1.0并返回的下一项   该数组的索引。如果数组是,则此方法应返回-1   充分。 -1是一个公共标志,表示应该在方法中失败   只返回非负整数。

我在main方法中调用此方法时遇到问题。问题在于我的getNextProjectIndex方法或我调用它的主要方法吗?

  public double getNextProjectIndex()
  {
    int i = 0;
    int full = -1;
    while(i < projects.length)
    {
      if (projects[i] == -1)
      {

        return i;
      }
      else if (i == (projects.length - 1) && projects[i] != -1)
      {
        return full;
      }

    }

    return i;

  }

这是我的主要方法:

public class Main {

  public static void main(String [ ] args)
  {
    Student testStudent = new Student("BL", "Hill", 34);
    int i = 0;
    System.out.println(testStudent.getFname() + " " + testStudent.getLname() );

    while(i < 5)
    {
      if(testStudent.getNextProjectIndex() != 0)
      {      
        testStudent.setProjectScore(10.0, i);
        System.out.println("Scores are: "+ testStudent.getProjectScore(i));
      }  


      i++;
    }


  }

}

当程序运行时,只显示一个分数而不是5分。它没有完全贯穿循环。如果数组中的所有插槽都已填充,则只应从该方法返回-1。

3 个答案:

答案 0 :(得分:4)

  

创建一个名为getNextProjectIndex()的方法,返回一个int

您已将方法声明为返回double,即使规范要求返回int,并且您尝试在函数中返回int i

public double getNextProjectIndex()
       ^^^^^^

答案 1 :(得分:2)

我猜你的程序挂了。在while中的getNextProjectIndex()循环中,i永远不会递增,从而导致无限循环。

- Edit-- 此外,你在方法尝试中有一些缺点:

public int getNextProjectIndex()
{
  int i = 0;
  while(i < projects.length) {
    if (projects[i] == -1)
      return i;
    ++i;
  }
  return -1;
}

- 编辑 - 更改为while循环,因为这显然是必需的。

答案 2 :(得分:1)

似乎你没有在getNextProjectIndex中增加while循环。