0

I'm trying to write an Oregon Trail type story in java. In one of the methods later on, you are asked to input your name. I've used this to get the name:

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

I would like to keep referring to the player as the name they entered in other methods and I'm unsure on how to call it. Any help is appreciated.

4

1 回答 1

2

当你声明

String name = keys.nextLine();

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

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

String playerName;

如果该方法在 Game 中,那么您只需拥有以下代码:

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

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

一个更通用的解决方案(根据您的代码结构可能比上述解决方案更好)是让该方法返回一个字符串,而不是设置一个。例如:

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

像这样的方法将返回一个包含名称的字符串,这将允许您在方法之外使用它。

于 2013-11-05T05:13:26.833 回答