Java 尝试仅比较和打印处于非活动状态的成员 尝试仅比较和打印处于非活动状态的成员。问题是它不会搜索数组并检查每个元素的状态。如果第一个元素处于“活动”状态,它将打印错误消息,并且不会继续检查其他元素

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

如果第一个元素的状态为“非活动”,它将打印,但在输出之前抛出异常,如下所示:

线程“main”java.lang.NullPointerException中的异常位于 allianctive(MemberTest.java:293)位于 main(MemberTest.java:58)

  • 账号:1名称:1日期:1状态:非活动类型:1任何 非常感谢您的帮助!代码如下:

  •  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;check
    NullPointerException

    我不想给你完整的代码,因为反复试验是一种很好的学习方式,所以试着用这些提示来解决它。如果你遇到任何问题,经过一段时间的思考后仍然无法解决,请回来。

    哪一行是293?你应该使用调试器检查这一行中的哪个变量是
    null
    。为什么不这样做他两次使用相同的条件?我两次使用相同的条件,因为我原来有while(accounts[check]!=null);它会无限循环错误语句,这让我很恼火。谢谢你的帮助。我最终使它工作得很好。我也使用了for-each语句,我发现这更容易,基本上我所要做的就是在else语句中进行增量检查,当我想移动到下一个元素时,而不是打印延迟的消息我,再次感谢你的帮助!