学习Java,For循环无法呈现。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Java,For循环无法呈现。相关的知识,希望对你有一定的参考价值。

我创造了这个 PassworField 如果用户输入了正确的密码,就会跳出这个循环。hello. 它应该循环5次才会阻止用户。如果用户第一次输入正确的密码,它确实会中断,但当用户第一次输入错误的密码,然后在第二次尝试正确时,它不会中断。即使我输入了正确的密码,它也只是循环5次,然后就会被阻止。如果你能帮助我,我将感激不尽......把我逼疯了......我创建了这个PassworField方法。

public class LoginPage {


         static String password = "hello";
         static Scanner scn = new Scanner(System.in);
         static String input = scn.nextLine();


        public static void PasswordField() {
            System.out.println("Enter the password");
            for (int i = 0; i <5; i++) {
                if (password.equals(input)) {
                        System.out.println("You are In");
                             break;
                }
                   else if(!input.equals(password)) {
                            System.out.println("Wrong, Please Enter the Password again:");
                            scn.nextLine();
                    }
                else {
                       System.out.println("You are Blocked sucker. call helpdesk");
                }


            }
                            scn.close();
         }
答案

你缺少的是更新 input 的新值。此外,被屏蔽的逻辑应该是 之后 for循环结束。

 public static void PasswordField() {
        System.out.println("Enter the password");
        for (int i = 0; i < 5; i++) {
            if (password.equals(input)) {
                System.out.println("You are In");
                scn.close();
                return;
            } else {
                System.out.println("Wrong, Please Enter the Password again:");
                input = scn.nextLine();
            }
        }
        System.out.println("You are Blocked sucker. call helpdesk");
        scn.close();
}
另一答案

循环结束后,你需要检查用户是否超过了允许的最大尝试次数。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        inputPassword();
    }

    public static void inputPassword() {
        final Scanner scn = new Scanner(System.in);
        final String password = "hello";
        String input;
        int i;
        for (i = 1; i <= 5; i++) {
            System.out.print("Enter the password: ");
            input = scn.nextLine();
            if (password.equals(input)) {
                System.out.println("You are In");
                break;
            } else if (i < 5) {
                System.out.println("Wrong, Please Enter the Password again.");
            }
        }
        if (i > 5) {
            System.out.println("You are blocked as you have exceeded the maximum limit.");
        }
    }
}

一个运行示例。

Enter the password: 1
Wrong, Please Enter the Password again.
Enter the password: 2
Wrong, Please Enter the Password again.
Enter the password: 3
Wrong, Please Enter the Password again.
Enter the password: 4
Wrong, Please Enter the Password again.
Enter the password: 5
You are blocked as you have exceeded the maximum limit.

另一个示例运行。

Enter the password: 1
Wrong, Please Enter the Password again.
Enter the password: Hello
Wrong, Please Enter the Password again.
Enter the password: hello
You are In

其他一些重要的注意事项:

  1. 不要关闭一个 Scanner 对于 System.in 临近 System.in 也是。
  2. 遵循 Java命名惯例 如:方法。PasswordField 应命名为 passwordField 按照命名惯例。

以上是关于学习Java,For循环无法呈现。的主要内容,如果未能解决你的问题,请参考以下文章

for循环结构

带有边距和页面转换器的片段内的 ViewPager 无法正确呈现

Java错题

Vue 模板未在 for 循环中呈现

c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围

从 Typescript 中的 For 循环在画布上绘制线条不会呈现