创建一个名为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。
答案 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循环。