Генерация пароля и ввод не работает
Я попытался создать случайный пароль gen, а затем вам пришлось ввести случайный пароль, который должен быть точно таким же, но проблема в том, что он всегда скажет: пароли не совпадают. Таким образом, даже если совпадения совпадают, это все равно не работает... Если я обращаюсь к нему (Так что "если (! Scanner.equals(random)){") это говорит, что это работает, но это только инвертирует, так что это не странно XD Вот мой код:
import java.util.Random;
import java.util.Scanner;
class V20ControlPanel {
public static void main(String[] args) throws InterruptedException {
Random random = new Random();
final String alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
final int N = alphabet.length();
for (int i = 0; i < 4; i++) {
System.out.print(alphabet.charAt(random.nextInt(N)));
}
String s;
Scanner scanner = new Scanner(System.in);
s = scanner.nextLine();
if (random.equals(scanner)) {
System.out.println("You've succesfully logged in! With password: " +s);
} else {
System.out.println("The passwords didn't match, please try again.");
}
}
}
1 ответ
Вы сравниваете Random
возражать против Scanner
объект, а не значения, которые вы хотите получить. Объявите локальную переменную для хранения того, каким должен быть пароль:
public static void main(String[] args) throws InterruptedException {
Random random = new Random();
final String alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
final int N = alphabet.length();
String pass = ""; //The variable to hold the password
for (int i = 0; i < 4; i++) {
pass += alphabet.charAt(random.nextInt(N)); //Add to password
}
String s;
Scanner scanner = new Scanner(System.in);
s = scanner.nextLine();
if (pass.equals(s)) { //Changed
System.out.println("You've succesfully logged in! With password: " +s);
} else {
System.out.println("The passwords didn't match, please try again.");
}
}
Это все еще довольно неэффективный код. Вы могли бы рассмотреть способы более эффективного генерирования случайного String
,