JAVA 中的另一个条件

condition inside another in JAVA

let the user get 3 attempts only, after it he get his account suspened我试过要求用户提供最终密码 3 次,如果他不这样做,他的帐户将被暂停,如果正确,则会给他一个刺耳的消息。


package EE;
import java.util.Scanner;
public class test {
    public static void main(String[] args) {
            final String password= "Test";
            Scanner sc = new Scanner(System.in);
            System.out.println("Please enter the password: ");
            String pass = sc.next();
            for (int i=0; i<2;) {
            if (!pass.equals (password))
                i++;
                System.out.println("Try again! ");
                String pass1 = sc.next();
                     if(pass.equals( password))
                        System.out.println("Welcome");
                        String pass2 = sc.next();
                    if (i == 2)
            System.out.println("Sorry, your account is suspened");      
    }
}}

正如 Alea 评论的那样,您需要在 if 语句中的块周围使用大括号 { ... }

for (int i=0; i<2;) {
if (!pass.equals (password))
    i++;
    System.out.println("Try again! ");
    String pass1 = sc.next();
         if(pass.equals( password))
            System.out.println("Welcome");
            String pass2 = sc.next();
        if (i == 2)
System.out.println("Sorry, your account is suspened");
} 

实际上是这个意思:

for (int i = 0; i < 2; ) {
    if (!pass.equals(password)) {
        i++;
    }
    System.out.println("Try again! ");
    String pass1 = sc.next();
    if (pass.equals(password)) {
        System.out.println("Welcome");
    }
    String pass2 = sc.next();
    if (i == 2) {
        System.out.println("Sorry, your account is suspened");
    }
}

一旦我们正确地缩进了代码并在编译器需要的地方添加了大括号,我们就可以开始看到一些问题了。

例如:

  1. 当密码正确时,不会增加任何内容i。这意味着 i < 2 不会为真,循环将不断循环。

  2. 您为每个循环迭代调用了两次 next()

等等。

现在我可以为您重写代码1。但是你不会从中学到很多东西。 (您将通过自己编写代码、犯错并发现并改正错误来获得最好的学习效果……您自己!)

相反,我将建议您阅读 Rubber Duck debugging 技术。这听起来像是个笑话,但事实并非如此。这是一种以幽默的方式解释的重要技术。这就是我在 18 岁学习编程时被教导的调试程序的方法2.

Rubber Duck 调试背后的理念是帮助您了解计算机的运行方式"thinks"。一旦你能做到这一点,编程就会变得容易得多。这就是为什么我强烈建议你自己做!

无论如何,一旦您可以想象代码做错了什么,下一步就是弄清楚它应该做什么。


1 - 首先,它会更快!

2 - 虽然我们当时没有用那个名字来称呼它。我们称之为手工执行,我们用铅笔和纸来完成。通常在旧计算机打印输出的背面。是的,很久以前。在那些日子里,我们没有调试器或 IDE。这是打卡,等了 20 分钟才取回打印输出!