我正在尝试使用方法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不保留它的值?
答案 0 :(得分: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);
不会更改帐户或密码。
一种解决方案是使用类字段,并更改它们。另一种方法是传入对具有帐户和密码字段的对象的引用,然后更改其字段的状态。