如何在另一个方法中的方法内部使用HashMap中的数据



所以我想在Clicked方法中的clickRegister方法中使用添加到HashMap的数据。但据我所见,数据并没有保存在方法之外。我想这是因为它超出了范围?(我是编程新手,所以如果我错了,请纠正我(。我怎样才能做到这一点?这可能吗?

public class Controller {
private HashMap<String, String> userList = new HashMap<String, String>();
public void Clicked(ActionEvent actionEvent) throws IOException {
String cpr = cprField.getText();
String password = passwordField.getText();
if (userList.containsKey(cpr) && userList.containsValue(password)){
Stage stage1;
Parent root1;
stage1 = (Stage) loginButton.getScene().getWindow();
root1 = FXMLLoader.load(getClass().getResource("home.fxml"));
Scene scene = new Scene(root1);
stage1.setScene(scene);
stage1.show();
} else {
System.out.println("Wrong credentials");
}
}
public void clickRegister(ActionEvent actionEvent) throws IOException {
if (cprFieldReg.getText().equals("") && passwordFieldReg.getText().equals("")){
System.out.println("Fill in blank fields");
} else {
String username = cprFieldReg.getText();
String password = passwordFieldReg.getText();
userList.put(username, password);
}
}
}

您只需要了解变量作用域如何为变量声明工作。所有的语言都差不多。声明包括方法和构造函数参数声明以及变量声明。

可能的范围包括:

  • 全局作用域(可从程序的每个部分访问声明(
  • 类作用域(可以从类的每个部分访问声明(
  • 实例范围(可以从实例方法访问声明(
  • 方法范围(可以从方法中的任何位置访问声明(
  • 局部作用域(可以从大括号中访问声明(

cpr变量是在一个方法中声明的,因此其作用域仅限于该方法。如果将声明从Click方法移到HashMap声明下,则整个类都可以访问该变量。我认为这可能就是你在这种情况下所需要的。

以下是更多信息:https://en.wikibooks.org/wiki/Java_Programming/Scope

最新更新