gpt4 book ai didi

java - 如何使用 Scanner java 重复读取用户输入

转载 作者:行者123 更新时间:2023-12-01 04:14:46 30 4
gpt4 key购买 nike

我正在尝试为我的程序创建一个读取用户输入的简单菜单。代码如下:

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()
}

这是一个测试,但我得到了异常(exception):

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();
}

关于java - 如何使用 Scanner java 重复读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19537515/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com