Пока петля печатает строку неправильно - PullRequest
0 голосов
/ 07 декабря 2018
import java.util.Scanner;

public class US_Defense {
    public static void main(String[] args) {
        System.out.println(" ------------------------------------- ");
        System.out.println("  Welcome to the U.S. Defense Network  ");
        System.out.println(" ------------------------------------- ");
        System.out.println("   Please Input your password below.   ");
        System.out.println(" ------------------------------------- ");  


        String pass = "";
        while(!pass.equals("0286139") ){
            System.out.println(" ------------------------------------- ");
            System.out.println("     Incorrect password. Try again.    ");
            System.out.println(" ------------------------------------- ");

            Scanner input = new Scanner(System.in);
            System.out.print("  >: ");
            pass = input.nextLine();
        }
    }
}

Когда я нажимаю «Запустить», он говорит «Добро пожаловать» и вводит пароль, а затем - «Неверный пароль» и приглашение пользователя.Я пытаюсь сделать так, чтобы код только приветствовал и вводил пароль, но этого не происходит.

1 Ответ

0 голосов
/ 07 декабря 2018
Петля

A do-while, вероятно, является самым чистым решением.Хорошей идеей будет сбросить System.out, когда вы print (если вы не добавите новую строку, неявный сброс не выполняется).Если вы действительно хотите цикл while, вы можете использовать тот факт, что назначение разрешается с правой стороны, например:

Scanner input = new Scanner(System.in);
System.out.print("  >: ");
System.out.flush();
String pass;
while (!(pass = input.nextLine()).equals("0286139")) {
    System.out.println(" ------------------------------------- ");
    System.out.println("     Incorrect password. Try again.    ");
    System.out.println(" ------------------------------------- ");

    System.out.print("  >: ");
    System.out.flush();
}

Но do-while (как упоминалось) будет чище, и можетпохожи

Scanner input = new Scanner(System.in);
do {
    System.out.print("  >: ");
    System.out.flush();
    String pass = input.nextLine();
    if (pass.equals("0286139")) {
        break;
    }
    System.out.println(" ------------------------------------- ");
    System.out.println("     Incorrect password. Try again.    ");
    System.out.println(" ------------------------------------- ");
} while (true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...