Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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 如果不是使用扫描仪的int,我怎么能不允许用户输入?_Java - Fatal编程技术网

Java 如果不是使用扫描仪的int,我怎么能不允许用户输入?

Java 如果不是使用扫描仪的int,我怎么能不允许用户输入?,java,Java,我是一个非常新的程序员,我刚刚学习了扫描仪,但我正在尝试找到一种方法,当我按下向上或向下键时,它会在选项之间循环,在前面放一个>以知道它是当前选择的选项 提示如下: What would you like to do: Attack Inventory Stats Flee 我想它有一个箭头前面的选定的一个,并改变与向上和向下箭头键的选择。例如,一旦出现提示,就会显示如下: public class Prompter { Scanner input = new Sc

我是一个非常新的程序员,我刚刚学习了扫描仪,但我正在尝试找到一种方法,当我按下向上或向下键时,它会在选项之间循环,在前面放一个>以知道它是当前选择的选项

提示如下:

What would you like to do:  
Attack   
Inventory  
Stats  
Flee
我想它有一个箭头前面的选定的一个,并改变与向上和向下箭头键的选择。例如,一旦出现提示,就会显示如下:

public class Prompter {

    Scanner input = new Scanner(System.in);
    public int options() throws IOException {
        System.out.printf("What would you like to do:%nAttack %n Inventory %n Stats %n Flee %n");
        while (!input.hasNextInt()) input.next();
        int choice = input.nextInt();
        System.out.printf("Choice: %d", choice);
    return choice;
    }
}
您想做什么:

What would you like to do:  
> Attack   
Inventory  
Stats  
Flee
如果按下向下箭头键两次:

What would you like to do:  
Attack   
Inventory  
> Stats  
Flee
因此,我当前的代码如下所示:

public class Prompter {

    Scanner input = new Scanner(System.in);
    public int options() throws IOException {
        System.out.printf("What would you like to do:%nAttack %n Inventory %n Stats %n Flee %n");
        while (!input.hasNextInt()) input.next();
        int choice = input.nextInt();
        System.out.printf("Choice: %d", choice);
    return choice;
    }
}
它现在做的是接受一个int输入并返回它


请不要给我一个巨大的代码块而不解释它,因为我是一个相当新的程序员。谢谢

如前面的评论所述,不可能在控制台中轻松实现这种行为

一个简单的解决方法是在选项后面映射数字。(攻击(1)、清单(2),…)并扩展代码,如:

int inputChoice = input.nextInt();
String choice = "";
switch(inputChoice){
      case 1: choice = "Action";
      case 2: choice = "Inventory";
      // add cases
}
System.out.println("Choice: " +choice);
return choice; // or inputChoice if you want to return an int value

这不是最好的方法,但可以满足您当前的需要。

这不是控制台程序的工作方式,而是主要存在于GUI程序(如JavaFx或Swing程序)中的行为。例如,如果这是一个Swing GUI,我建议您为此使用
JComboBox
。您可能想查看这个使用JNI(Java本机接口)的库:还有Charva()或JCurses()。谢谢您的反馈,我不确定是否可以这样做,我想如果不使用GUI,但我会研究这些选择。