JAVA将文本设置为字符串时,继续获取java.lang.String

JAVA将文本设置为字符串时,继续获取java.lang.String,java,jframe,Java,Jframe,这里是Java初学者,所以在我的密码生成程序中, 所以,我尝试了一个选项来生成多个密码,它们之间有一个空格 例如: 密码1 密码2 但是,当我将“密码”文本设置到textfield时,我不断得到如下内容:ADWADjava.lang.StringQE_Q12 我没有在我的代码中发现任何错误,或者导致java.lang.String弹出的东西,如果您知道有什么问题,请回答这个问题或发送答案 我的代码: createPass.addActionListener(new ActionListe

这里是Java初学者,所以在我的密码生成程序中, 所以,我尝试了一个选项来生成多个密码,它们之间有一个空格

例如: 密码1

密码2

但是,当我将“密码”文本设置到textfield时,我不断得到如下内容:ADWADjava.lang.StringQE_Q12

我没有在我的代码中发现任何错误,或者导致java.lang.String弹出的东西,如果您知道有什么问题,请回答这个问题或发送答案

我的代码:

    createPass.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                field.setText(null);
                field.setText("");
                String[] pass = new String[5];
                for(int i = 0; i < pass.length ; i++) {
                    pass[i] = allrandom();


                }
                for(int i = 0; i < pass.length ; i++) {
                    field.setText(field.getText() + pass[i]);
                }


            }});



}
    public static String allrandom() {
        String cpass = "";
        password = "";
        String[] pass = new String[15];
        Random r = new Random();
    for(int i = 0 ; i < pass.length ; i++) {
        int ch = 0;
        ch = r.nextInt(3);
        switch(ch) {
        case 0:
            if(passsettings.isIfDots()) {
                String newchar = ""; 
                newchar = dotpass();
                pass[i] = newchar;
                break;
            }
        case 1:
            if(passsettings.isIfNum()) {
                String newchar2 = ""; 
                newchar2 = Numpass();
                pass[i] = newchar2;
                break;
            }
        case 2:

            String newchar3 = ""; 
            newchar3 = charchose();
            pass[i] = newchar3;
            break;
        }

    }
    for(int i = 0 ; i < pass.length ; i++) {
        String newpasschar = "";
        newpasschar = pass[i];
        cpass = pass + newpasschar;
    }
    cpass = cpass + "\n";
    return cpass;


        // random() end
    }


    public static String uppercasepass() {
        String[] abc = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
        Random r = new Random();
        String passletter = "";
        int rN3 = 0;
        rN3 = r.nextInt(26);
        passletter = abc[rN3];



        return passletter;
    // uppercase() end
}

    public static String lowercasepass() {
        Random r = new Random();
        String passletter = "";
        int rN3 = 0;
        rN3 = r.nextInt(26);
        String[] abc = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        passletter = abc[rN3];
        return passletter;
    }

    public static String Numpass() {
        Random r = new Random();
        String passletter = "";
        int rN = 0;
        rN = r.nextInt(9);
        String[] nums = {"1","2","3","4","5","6","7","8","9"};
        passletter = nums[rN];
        return passletter;
    }

    public static String dotpass() {
        Random r = new Random();
        String passletter = "";
        int rN5 = 0;
        rN5 = r.nextInt(6);
        String[] dots = {"_","]","$","#","=","@"};
        passletter = dots[rN5];




        return passletter;
    }


    public static String charchose() {
        Random r = new Random();
        String line = "";
        int rN = 0;
        rN = r.nextInt(2);
        String[] random = {"Low","Up"};
        String random2 = random[rN];
        switch(random2) {
        case "Low":
            if(passsettings.isIfLowercase()) {
                line = lowercasepass();
            }else {
                charchose();
            }
        case "Up":
            if(passsettings.isIfUpprcase()) {
                line = uppercasepass();
            }else {
                charchose();
            }
        }










        return line;
    }
createPass.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
field.setText(空);
字段。setText(“”);
字符串[]通过=新字符串[5];
for(int i=0;i
谢谢

  • Java初学者

在调试代码时,我遇到了(很多问题,但主要是)

这意味着你可以简单地做一些像

System.out.println(new PasswordBuilder(15).build());
System.out.println(new PasswordBuilder(15).useNumbers(false).build());
System.out.println(new PasswordBuilder(15).userLowerCase(false).build());
System.out.println(new PasswordBuilder(15).userLowerCase(false).useUpperCase(false).build());
xt7$93l]]#]@$xc
]o#r=#pxhk@lyth
@_s5q6]#8i$h]##
2#ccw_1]m3kaz_1
然后让它输出像

System.out.println(new PasswordBuilder(15).build());
System.out.println(new PasswordBuilder(15).useNumbers(false).build());
System.out.println(new PasswordBuilder(15).userLowerCase(false).build());
System.out.println(new PasswordBuilder(15).userLowerCase(false).useUpperCase(false).build());
xt7$93l]]#]@$xc
]o#r=#pxhk@lyth
@_s5q6]#8i$h]##
2#ccw_1]m3kaz_1
代码中有许多点可能会导致递归(堆栈)溢出,在这些点上您会反复调用一个方法,因此您确实需要检查可用标志的状态,并确保至少有一个是
true


您仍然可以使用数组(而不是
List
s),但基本思想保持不变

注意:我使用System.out.println进行了尝试,一切都正常。
field.getText().toString()
@JavaStarter。如果您测试了(例如使用sysout)一些方法,您应该可以看到错误的来源。在您的例子中,这是在
setText
上,对吗?它看起来像是从toString()方法而不是从getText()方法获取文本?请将其简化为格式良好的文本。目前代码很长(148行),不完整,格式不好。请记住,Stack Overflow旨在成为高质量问题的存储库。写密码可能需要很长时间,但我向你保证,这是值得的。我可能会使用你的密码生成器,但我现在真的很愚蠢,没有注意到pass+newpasschar错误的“错误”。。。