如何从与最初声明的方法不同的方法调用字符串

时间:2013-11-05 04:48:20

标签: string methods

我正在尝试用java编写Oregon Trail类型的故事。在稍后的某个方法中,系统会要求您输入您的姓名。我用它来得到这个名字:

Scanner keys = new Scanner(System.in);
String name = keys.nextLine();

我想继续将玩家称为他们在其他方法中输入的名称,我不确定如何调用它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

宣布

String name = keys.nextLine();

您正在该方法范围内创建一个字符串。正如您可能已经注意到的那样,一旦方法完成,就无法再访问它了。您不希望将字符名称存储在该方法的本地变量中,而是将其保存到外部作用域中的变量中。

在Java的面向对象设计中,放置它的理想位置是相关类的实例变量。假设你有一个名为“游戏”的大师班。此类的实例将代表正在运行的游戏,具有与游戏交互的方法,并保存有关游戏的数据。您可以在Game中将实例变量声明为:

String playerName;

如果该方法在Game中,那么您只需要代码:

Scanner keys = new Scanner(System.in);
this.playerName = keys.nextLine();

由于您将名称分配给存在于方法范围之外的变量,因此稍后您仍可以访问该变量。确切的方法取决于您如何构建类。

一个更通用的解决方案,根据你的代码结构,它可以比上面的解决方案更好地工作,就是让该方法返回一个String,而不是设置一个。例如:

String getPlayerName() {
    Scanner keys = new Scanner(System.in);
    return keys.nextLine();
}

这样的方法会返回一个包含名称的字符串,这样就可以在方法之外使用它。