Java 密码随机化器:创建相同的密码
关键是要做一个密码随机化器,但我的问题是我的代码总是使用相同的密码。我尝试过各种各样的东西,这是我通过互联网得到的最新的一个 主要类别:Java 密码随机化器:创建相同的密码,java,random,Java,Random,关键是要做一个密码随机化器,但我的问题是我的代码总是使用相同的密码。我尝试过各种各样的东西,这是我通过互联网得到的最新的一个 主要类别: class Program { public static void main(String[] args) { PasswordRandomizer randomizer = new PasswordRandomizer(13); System.out.println("Password: " + randomizer
class Program {
public static void main(String[] args) {
PasswordRandomizer randomizer = new PasswordRandomizer(13);
System.out.println("Password: " + randomizer.createPassword());
System.out.println("Password: " + randomizer.createPassword());
System.out.println("Password: " + randomizer.createPassword());
System.out.println("Password: " + randomizer.createPassword());
}
}
程序
类:
import java.util.Random;
public class PasswordRandomizer {
// Define the variables
private Random password = new Random();
private int length;
private String character;
public PasswordRandomizer(int length) {
//creates a new object, uses the given password length
this.length = length;
String characters = "";
Random rndNumbers = new Random();
int randomnumber = 0;
for (int nbr = 1; nbr < length; nbr++) {
randomnumber = rndNumbers.nextInt(25);
char character = "abcdefghijklmnopqrstuvwxyz".charAt(randomnumber);
characters = characters + character;
}
System.out.println(characters);
this.character = characters;
}
public String createPassword() {
// write code that returns a randomized password
PasswordRandomizer randomizer = new PasswordRandomizer(13);
//consists of symbols a-z and is of the length given as a parameter to the constructor
return this.character;
}
}
import java.util.Random;
公共类密码随机化器{
//定义变量
私有随机密码=新随机();
私有整数长度;
私有字符串;
公共密码随机化器(整数长度){
//创建一个新对象,使用给定的密码长度
这个长度=长度;
字符串=”;
随机rndNumbers=新随机数();
int随机数=0;
对于(int nbr=1;nbr<长度;nbr++){
随机数=rndNumbers.nextInt(25);
character=“abcdefghijklmnopqrstuvxyz”。charAt(随机数);
字符=字符+字符;
}
System.out.println(字符);
this.character=字符;
}
公共字符串createPassword(){
//编写返回随机密码的代码
PasswordRandomizer randomizer=新的PasswordRandomizer(13);
//由符号a-z组成,长度作为构造函数的参数给定
返回此.character;
}
}
在
PasswordRandomizer
方法中,有行System.out.println(字符)
每次打印随机密码。但是不同的密码不会出现在createPassword
方法中,只有第一个密码会在输出中始终使用相同的密码。在您的示例中,您创建了两个Random
实例和两个PasswordRandomizer
实例
您继续调用
createPassword()
(在其中一个实例上),它创建一个PasswordRandomizer
对象(并将其丢弃),然后只返回this.character
(不是随机数发生器。字符,它将为您提供所需的行为)。正如我在评论中提到的,您的方法createPassword()
调用构造函数并创建一组丢失的新实例变量。将您的“随机化”代码移动到此方法可以修复它。看看这本书。下面是修改过的构造函数和createPassword()
代码
public PasswordRandomizer (int length) {
//creates a new object, uses the given password length
this.length = length;
}
public String createPassword() {
String characters = "";
Random rndNumbers = new Random();
int randomnumber = 0;
for (int nbr = 1; nbr < length; nbr++) {
randomnumber = rndNumbers.nextInt(25);
char character = "abcdefghijklmnopqrstuvwxyz".charAt(randomnumber);
characters = characters + character;
}
System.out.println(characters);
return characters;
}
公共密码随机化器(int-length){
//创建一个新对象,使用给定的密码长度
这个长度=长度;
}
公共字符串createPassword(){
字符串=”;
随机rndNumbers=新随机数();
int随机数=0;
对于(int nbr=1;nbr<长度;nbr++){
随机数=rndNumbers.nextInt(25);
character=“abcdefghijklmnopqrstuvxyz”。charAt(随机数);
字符=字符+字符;
}
System.out.println(字符);
返回字符;
}
所以你的代码不能按预期工作?欢迎来到代码回顾!然而,我担心这个问题与这个网站的内容不符。代码审查是关于改进现有的工作代码。CodeReview不是在修复或更改代码时寻求帮助的网站。一旦代码满足了您的要求,我们很乐意帮助您以更干净的方式完成同样的事情!有关更多信息,请参阅我们的。如果要创建随机数,应使用SecureRandom而不是random。随机性不够安全。@asgs你为什么叫他哑巴。。?那有点糟糕,伙计。也许他/她只是新来的。@LostBam我把那个方法称为哑巴。我不相信侮辱,尤其是在编程方面。“我曾经在那里做过这件事。”asgs误解了这一点,这是我的错误。
public String createPassword() {
// write code that returns a randomized password
PasswordRandomizer randomizer = new PasswordRandomizer(13);
//consists of symbols a-z and is of the length given as a parameter to the constructor
return randomizer.character; //This could be a simple fix.
}