Java 尝试仅比较和打印处于非活动状态的成员 尝试仅比较和打印处于非活动状态的成员。问题是它不会搜索数组并检查每个元素的状态。如果第一个元素处于“活动”状态,它将打印错误消息,并且不会继续检查其他元素
如果第一个元素的状态为“非活动”,它将打印,但在输出之前抛出异常,如下所示: 线程“main”java.lang.NullPointerException中的异常位于 allianctive(MemberTest.java:293)位于 main(MemberTest.java:58)Java 尝试仅比较和打印处于非活动状态的成员 尝试仅比较和打印处于非活动状态的成员。问题是它不会搜索数组并检查每个元素的状态。如果第一个元素处于“活动”状态,它将打印错误消息,并且不会继续检查其他元素,java,Java,如果第一个元素的状态为“非活动”,它将打印,但在输出之前抛出异常,如下所示: 线程“main”java.lang.NullPointerException中的异常位于 allianctive(MemberTest.java:293)位于 main(MemberTest.java:58) 账号:1名称:1日期:1状态:非活动类型:1任何 非常感谢您的帮助!代码如下: public static void AllInactive() { int check=0; do
public static void AllInactive()
{
int check=0;
do
{
if ( accounts[check] instanceof Student && accounts[check].getStatus().equals("INACTIVE") )
{
System.out.printf("\nAccount Number: %d \nName: %s \nDate: %d \nStatus: %s \nType: %s \n" , accounts[check].getIdNumber(),accounts[check].getName(),accounts[check].getDateJoined(),accounts[check].getStatus(),accounts[check].getMemberType());
check++;
}
else if ( accounts[check] instanceof Adult && accounts[check].getStatus().equals("INACTIVE"))
{
System.out.printf("\nAccount Number: %d \nName: %s \nDate: %s \nStatus: %s \nType: %s \n" , accounts[check].getIdNumber(),accounts[check].getName(),accounts[check].getDateJoined(),accounts[check].getStatus(),accounts[check].getMemberType());
System.out.print("\n");
check++;
}
else
{
System.out.println("**Account Does Not Exist**");
}
} while ( accounts[check].getStatus().equals("INACTIVE"));
}
为了确保我们讨论的是同一件事:据我所知,您有一个包含人员帐户的数组。您要做的是获取当前处于非活动状态的所有帐户,而不获取其他任何帐户 如果你发现一个活跃的帐户,为什么要停止循环?如果您的帐户处于非活动状态,然后是活动帐户,然后又是非活动帐户,则循环将在活动帐户停止,因为while(accounts[check].getStatus().equals(“inactive”)的条件为false。您需要检查整个阵列,因此必须在整个阵列中循环。这可以通过
for(int check=0;checkNullPointerException
我不想给你完整的代码,因为反复试验是一种很好的学习方式,所以试着用这些提示来解决它。如果你遇到任何问题,经过一段时间的思考后仍然无法解决,请回来。哪一行是293?你应该使用调试器检查这一行中的哪个变量是null
。为什么不这样做他两次使用相同的条件?我两次使用相同的条件,因为我原来有while(accounts[check]!=null);它会无限循环错误语句,这让我很恼火。谢谢你的帮助。我最终使它工作得很好。我也使用了for-each语句,我发现这更容易,基本上我所要做的就是在else语句中进行增量检查,当我想移动到下一个元素时,而不是打印延迟的消息我,再次感谢你的帮助!