我正在尝试用java编写Oregon Trail类型的故事。在稍后的某个方法中,系统会要求您输入您的姓名。我用它来得到这个名字:
Scanner keys = new Scanner(System.in);
String name = keys.nextLine();
我想继续将玩家称为他们在其他方法中输入的名称,我不确定如何调用它。任何帮助表示赞赏。
答案 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();
}
这样的方法会返回一个包含名称的字符串,这样就可以在方法之外使用它。