1

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]);
    }
}

为什么变量 characterOne 不保持它的价值?

4

1 回答 1

0

您的问题是字符串是不可变的。所以调用这个方法:

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);

不会更改帐户或密码。

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

于 2013-11-03T14:36:16.977 回答