'else'中的语句被多次打印,但是我希望在'if'错误的情况下仅打印一次

时间:2018-08-08 17:48:14

标签: java for-loop if-statement while-loop java.util.scanner

在这里,我正在比较用户ID和密码数组的数组元素。 我希望在else条件错误的情况下,if语句仅打印一次。

我可以使用其他变量吗?或者有人可以建议我是否可以在任何地方使用break语句。

      public static void main(String args[])
       {
        lib1 o=new lib1();
        Scanner in=new Scanner(System.in);
        Scanner sc=new Scanner(System.in);
        int u[]={51,52,53,54,55};
        int p[]={1,2,3,4,5};
        int d=0;
        System.out.println("enter username and password");
        int un=in.nextInt();
        int pw=in.nextInt();

        for(int i=0,j=0;i<5 && j<5;i++,j++)
        {
            if(un==u[i] && pw==p[j])
            {
                while(d==0)
                {
                    System.out.println("enter subject name");
                    String c=sc.nextLine(); 
                    if(c.equals("java"))
                    o.java();
                    else if(c.equals("exit"))
                    {
                        d++;
                    }
                }
            }

            else
            {   
                System.out.println("invalid password"); 
            }   
        }
    }

4 个答案:

答案 0 :(得分:3)

break块的末尾添加一个else。这将使您立即退出for循环。

答案 1 :(得分:1)

  public static void main(String args[])
   {
    lib1 o=new lib1();
    Scanner in=new Scanner(System.in);
    Scanner sc=new Scanner(System.in);
    int u[]={51,52,53,54,55};
    int p[]={1,2,3,4,5};
    int d=0;
    System.out.println("enter username and password");
    int un=in.nextInt();
    int pw=in.nextInt();

    for(int i=0,j=0;i<5 && j<5;i++,j++)
    {
        if(un==u[i] && pw==p[j])
        {
            while(d==0)
            {
                System.out.println("enter subject name");
                String c=sc.nextLine(); 
                if(c.equals("java"))
                o.java();
                else if(c.equals("exit"))
                {
                    d++;
                }
            }
        }

        else
        {   
            System.out.println("invalid password"); 
            break;
        }   
    }
}

这是快速解决您的问题的方法,但是您也可以使用其他实现方法

答案 2 :(得分:1)

您可以在循环中要立即退出循环的任何位置放置break语句。这意味着您可以将其放在else块中,或if块中,或需要中断的地方。在嵌套循环中,break语句只会从调用它的立即循环中中断。

此外,在您的代码中,创建两个使用Scanner作为输入源的System.in对象。不建议这样做,因为如果一个Scanner关闭了,另一个也将关闭。相反,仅创建一个Scanner对象,并在完全完成该对象后将其关闭。

答案 3 :(得分:1)

Add if statement in end as shown in bold in code below.

public static void main(String args[])
           {
            lib1 o=new lib1();
            Scanner in=new Scanner(System.in);
            Scanner sc=new Scanner(System.in);
            int u[]={51,52,53,54,55};
            int p[]={1,2,3,4,5};
            int d=0;
            System.out.println("enter username and password");
            int un=in.nextInt();
            int pw=in.nextInt();

            for(int i=0,j=0;i<5 && j<5;i++,j++)
            {
                if(un==u[i] && pw==p[j])
                {
                    while(d==0)
                    {
                        System.out.println("enter subject name");
                        String c=sc.nextLine(); 
                        if(c.equals("java"))
                        o.java();
                        else if(c.equals("exit"))
                        {
                            d++;
                        }
                    }
                }   
            }
            **if(d == 0) {
                System.out.println("invalid password");
            }**
        }