Java 如何在单独的方法中接受用户输入?
在我的“移动”方法中,我向用户打印指令。在方法“game”中,我需要获取用户输入,并使用方法“usersMove”使程序根据用户输入执行不同的操作。我最初在方法“move”中扫描了我的用户输入,但该方法必须保留为空。有没有办法在“游戏”方法中获取用户输入,以便我可以将其值应用于其他方法Java 如何在单独的方法中接受用户输入?,java,methods,user-input,Java,Methods,User Input,在我的“移动”方法中,我向用户打印指令。在方法“game”中,我需要获取用户输入,并使用方法“usersMove”使程序根据用户输入执行不同的操作。我最初在方法“move”中扫描了我的用户输入,但该方法必须保留为空。有没有办法在“游戏”方法中获取用户输入,以便我可以将其值应用于其他方法 public static void move() { System.out.print("What do you want to do?"); } public static
public static void move()
{
System.out.print("What do you want to do?");
}
public static void usersMove(String playerName, int gesture)
{
int userMove = game();
if (userMove == -1)
{
System.exit(0);
}
}
public static void game()
{
move();
Scanner scan = new Scanner(System.in);
int userMove = scan.nextInt();
}
使扫描器
扫描静态,同时将初始化保持在game()
内,然后在需要值的任何地方使用它。首先,对于“真实”程序来说,使用这种静态方法是非常糟糕的做法,但我假设这是一个Java学习练习。。。只要记住,如果你以后像这样做,你可能做错了
将userMove
设置为静态,方法如下:
private static int userMove = -2; // or whatever value to indicate there's no move
然后在同一类的静态方法中使用它:
public static void usersMove(String playerName, int gesture)
{
// just for fun, to catch bugs
if (userMove < -1) {
throw new IllegalStateException("illegal userMove value " + userMove);
}
if (userMove == -1)
{
System.exit(0);
}
}
public static void game()
{
move();
Scanner scan = new Scanner(System.in);
userMove = scan.nextInt();
}
publicstaticvoidusersmove(字符串playerName,int手势)
{
//只是为了好玩,为了捉虫子
如果(userMove<-1){
抛出新的非法状态异常(“非法userMove值”+userMove);
}
如果(userMove==-1)
{
系统出口(0);
}
}
公共静态无效游戏()
{
move();
扫描仪扫描=新扫描仪(System.in);
userMove=scan.nextInt();
}
阅读示例,了解Java中的static
。为什么move()必须保持无效?它只需打印一个问题,其他什么都不需要。我发现它应该没有返回值,也没有输入。@user2181402:dude我想这是你在同一个代码片段中的第三个或第四个问题,我建议你去研究如何在java中创建一个方法,方法的返回类型意味着什么?我在类中声明了它,但在我拥有的任何方法之外?@user2181402是的,然后它成为该类的静态成员变量,这意味着只有一个,与该类的所有实例共享,即使没有创建实例,也可以访问。感谢您的链接。我对java非常陌生,还在学习。@user2181402注意:没有任何东西可以阻止您也进行扫描
静态,事实上,您可能需要这样做,以避免字符丢失到缓冲中(不确定,但如果您似乎丢失了用户输入,请尝试)。