Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在单独的方法中接受用户输入?_Java_Methods_User Input - Fatal编程技术网

Java 如何在单独的方法中接受用户输入?

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

在我的“移动”方法中,我向用户打印指令。在方法“game”中,我需要获取用户输入,并使用方法“usersMove”使程序根据用户输入执行不同的操作。我最初在方法“move”中扫描了我的用户输入,但该方法必须保留为空。有没有办法在“游戏”方法中获取用户输入,以便我可以将其值应用于其他方法

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注意:没有任何东西可以阻止您也进行
扫描
静态,事实上,您可能需要这样做,以避免字符丢失到缓冲中(不确定,但如果您似乎丢失了用户输入,请尝试)。