-1

我尝试生成一个随机密码,然后您必须输入必须完全相同的随机密码,但问题是,它总是会说:密码不匹配。所以即使密码匹配,它仍然不起作用......如果我反转它(所以“if(!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.");


    }
}

}

4

1 回答 1

2

您正在将一个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.

于 2016-05-11T20:10:49.887 回答