Java 变量未从输入对话框中获取字符串

Java 变量未从输入对话框中获取字符串,java,dialog,null,Java,Dialog,Null,我试图使用方法charEdit获取对话框的输入,该方法应该会更改输入,但是变量在最后仍然等于null public String showInputDialog(String stringy) { String input = JOptionPane.showInputDialog(this,stringy); if(input == null || input.isEmpty()) { input = showInputDialog(stringy);

我试图使用方法
charEdit
获取对话框的输入,该方法应该会更改输入,但是变量在最后仍然等于null

public String showInputDialog(String stringy)
{
    String input = JOptionPane.showInputDialog(this,stringy);
    if(input == null || input.isEmpty())
    {
        input = showInputDialog(stringy);
    }
    return input;
}

public void charEdit(Checkbox chara,String account,String password){
    chara.setLabel(showInputDialog("Character Name?"));
    account=(showInputDialog("Account Name?"));
    password=(showInputDialog("Account Password?"));
    chara.setEnabled(true);
}

public void menuItemSelected(MenuItem menuObj){
    if (menuObj==help){
        messageBox("Edit character info and then click the login button");
    }
    else if (menuObj==charOneEdit){
        charEdit(characterOne,charAArray[0],charPArray[0]);
    }
}

为什么variable characterOne不保留其值?

您的问题是字符串是不可变的。因此,调用此方法:

public void charEdit(Checkbox chara,String account,String password){
    chara.setLabel(showInputDialog("Character Name?"));
    account=(showInputDialog("Account Name?"));
    password=(showInputDialog("Account Password?"));
    chara.setEnabled(true);
}
不会更改传入方法的参数所引用的字符串

换句话说,称之为:

String acct = "";
String password = ""; // passwords should not be held in Strings by the way
charEdit(something, acct, password);
不会更改帐户或密码

一种解决方案是使用类字段,并更改这些字段。另一种方法是传入一个对象的引用,该对象具有帐户和密码字段,然后更改其字段的状态。

顺便说一下,我喜欢“反射是黑魔法巫术”注释xD