我正在尝试为我的程序创建一个简单的菜单来读取用户输入。这是代码:
public void menu() {
String command;
System.out.println("To operate with words write: a");
System.out.println("To operate with products write: b");
System.out.print("\nGive the command: ");
Scanner scanner = new Scanner(System.in);
command = scanner.nextLine();
if (command.equals("a")) {
System.out.println("\nGood job! You have chosen the word program\n");
System.out.println("You can only use the following commands: ");
System.out.println("exit - to exit the program");
System.out.println("add - to add a word into the map");
System.out.println("lookup - to lookup a word into the map\n");
System.out.print("Give a command: ");
command = scanner.next();
while(scanner.hasNext()){
command = scanner.next();
if(command.equals("add")){
this.addWord();
}
System.out.print("Give a command: ");
command = scanner.next(); //Here I get the ERROR that throws Exception
}
}
scanner.close();
}
public static void main(String [] args)
{
HashTableInterface table = new HashTable();
Dictionary d = new Dictionary(table);
RepositoryInterface repo = new Repository(d);
ControllerInterface controller = new Controller(repo);
Console c = new Console(controller);
c.menu()
}
这是我得到的例外测试:
To operate with words write: a
To operate with products write: b
Give the command: a
Good job! You have chosen the word program
You can only use the following commands:
exit - to exit the program
add - to add a word into the map
lookup - to lookup a word into the map
Give a command: add
add
Give the word: mar
Give the word's plural: mere
The hash code for mar is: 3
Give a command: Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at console.Console.menu(Console.java:56)
at test.Prog.main(Prog.java:26)
我从while循环中删除了第二个命令= Scanner.next(),但是让我仅读取一次用户输入。怎么解决呢?
更新:AddWord方法:
public void addWord() {
Scanner scanner = new Scanner(new InputStreamReader(System.in));
System.out.print("Give the word: ");
String word = scanner.nextLine();
System.out.print("Give the word's plural: ");
String plural = scanner.nextLine();
scanner.close();
controller.addTheWord(word, plural);
}
您可以使用
InputStreamReader str= new InputStreamReader (System.in);
BufferedReader uinp= new BufferedReader (str);
String val;
val= uinp.readLine();
while (!".".equals(val)) {
//do your stuff
//..and after done, read the next line of the user input.
val= uinp.readLine();
}
我发现了一个可以使用以下代码复制的严重问题: *我知道为什么在第一个代码块中nextLine()调用得到一个空字符串
我们如何读取用户的键盘(控制台)输入呢?从键盘和标准输入 os.Stdin 读取输入,最简单的办法是使用 fmt 包提供的 Scan 和 Sscan 开头的函数。请看以下程序: 示例 12.1 readinput1.go: // 从控制台读取输入: package main import "fmt" var ( firstName, lastName, s string i int
问题内容: 如何将a转换为a ? 问题答案: 这取决于最适合您的方式。明智地提高生产力,不要重蹈覆辙,而是使用Apache Commons。在哪。
我有以下课程 我不能输入歌曲名nr 1,因为它总是同时显示前两首歌。 如果我输入3,就像这样:
这是一个可以用作重复目标的规范问题/答案。这些需求基于每天发布的最常见的问题,并可能根据需要添加到。它们都需要相同的基本代码结构来到达每个场景,并且它们通常相互依赖。 大多数问题都包括在以上一个操作中失败的尝试。 > 我希望能够让我的程序自动等待下一个输入后,每个先前的输入以及。 我想知道如何检测一个退出命令,并结束我的程序时,该命令输入。 在Java世界中,是一个特例,它是一门极其挑剔的课,老师
我想从STDIN读取输入。我在C中使用fork()方法。我有子进程和父进程。我的输入是多行的。父进程只等待子进程终止,子进程只读取第一行,子进程终止后,父进程继续读取。我想要打印行。例如;输入-> null 子进程打印“星期一”,父进程打印“星期二”和“星期三”。一旦到达文件结尾,程序就会终止。 ./program