获得正确的字符串输出,但是我也得到了一个不需要的空输出

时间:2016-08-21 18:47:22

标签: java

这是输出'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);

    }

}

3 个答案:

答案 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="";