这是输出'nullsd87xc8'或其他一些随机密码,但它也会在随机字母之前保持null。
import java.util.*;
public class PassGen {
public static String randomPassword;
private static Scanner kb;
public static void main(String[] args) {
System.out.println("This program will generate a random password");
System.out.println("Enter desired password length");
kb = new Scanner(System.in);
int passLeng = kb.nextInt();
char[] passData = "abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*".toCharArray();
Random rand = new Random();
for (int i=1;i<=passLeng;i++) {
int random = rand.nextInt(passData.length-1);
randomPassword = randomPassword + Character.toString(passData[random]);
}
System.out.println(randomPassword);
}
}
答案 0 :(得分:1)
问题是您在使用字符串randomPassword
之前没有初始化它。第3行声明了字符串,给它内存空间但没有值。您获得的输出实际上并不是附加到单词null的随机字符,而是告诉您包含该字符串的内存地址,即null @ 0x3333333
。这是Java的说法,它是null,但由于Java的存储字符串对象的方法,你仍然有一个显示的内存地址。将第3行更改为public static String randomPassword = "";
,您应该开展业务。
答案 1 :(得分:0)
randomPassword以null开头。然后你添加字符。改变
public static String randomPassword;
到
public static String randomPassword = "";
答案 2 :(得分:0)
只需将""
添加到randomPassword
public static String randomPassword="";