Как прокомментировал 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");
}
}
Как только мы получимправильно сделал отступ в коде и добавил фигурные скобки в тех местах, где их ожидает компилятор, мы можем начать видеть некоторые проблемы.
Например:
Когдапароль правильный, ничего не будет увеличиваться i
. Это означает, что i < 2
не будет истинным, и цикл будет продолжаться и вокруг.
Вы вызываете next()
дважды для каждой итерации цикла.
И так далее.
Теперь я могу просто переписать ваш код для вас 1 . Но вы многому не научитесь из этого. (Вы лучше всего научитесь писать код для себя, делать ошибки, находить и исправлять их ... сами!)
Вместо этого я собираюсь рекомендовать вам прочитать об отладке Rubber Duck техника. Это может звучать как шутка, но это не так. Это важная техника, объясненная с юмором. И это то, чему меня учили как способ отладки программ, еще когда мне было 18 лет, и я учился программировать 2 .
Идея отладки Rubber Duck заключается в том, чтобы помочь вам понять, каккомпьютер "думает". Как только вы можете это сделать, программирование становится намного проще. И именно поэтому я настоятельно рекомендую вам сделать это самостоятельно!
В любом случае, как только вы сможете визуализировать, что код делает неправильно, следующим шагом будет выяснить, что должен делать. .
1 - Для начала было бы быстрее!
2 - Хотя мы не называли его по этому имени обратнотогда. Мы назвали это ручным исполнением, и мы сделали это карандашом и бумагой. Вообще на обороте старые компьютерные распечатки. Да, давным-давноИ в те дни у нас не было отладчиков или IDE. Это были перфокарты и 20 минут ожидания, чтобы вернуть распечатку!