Java: populating Scanner with default value on Scanner.nextLine();

浪子不回头ぞ 提交于 2020-01-05 08:20:52

问题


I am writing a java program that runs a loop and keeps asking the user for input. The program then does a bunch of things with the string, and asks for another string and repeats.

The issue is that many strings are very similar, so i would like to populate the prompt with the input from the last time in the loop. For instance: If the user enters a value as follows:

Enter the SKU Number: APE-6603/A

... Then the next time it asks for an SKU, it will wait till the user presses enter as normal, but be ready with the last value before the user even types anything:

Enter the SKU Number: APE-6603/A

... And the user can make simple changes very fast like replace the /A with /B and press enter! If the string that holds the user input is called "lookFor", is there a way to populate the prompt with this value in Java? It would be VERY useful!

Thanks!


回答1:


After discussing this idea with a few people, it seems that what i want is not possible. The way of input is too simple to allow something like this.

My only possible solutions involve not running this from my IDE. I can either elect to use my application, or change the application into a GUI based applet. Running from the console will open up the "Press up" option, as suggested by rchirino, and using a GUI would let the value entered sit there for editing later.

If anyone is looking to do what i posted above, the answer is "Java cant do it!". Sorry. :)




回答2:


You might want to try something like this:

public String promptandgetWithShowDefault(String prompt, String supplied) {
  String prmpt = prompt + " (press Enter for \"" + supplied + "\"):";
  String tmpch = null;
  System.out.print(prmpt);
  tmpch = scanner.nextLine().trim();
  if (tmpch == null || tmpch.equals("")) {
     return supplied;
  } else {
     return tmpch;
  }
}



回答3:


I think I understand what you want to do, but it's rather simple. If your program is a console application (command-line), which I'll assume, then you just need to press the UP key to populate the prompt with the last typed characters.

If you're working with GUI elements then you can check the API documentation for the particular class of object you're using and check out it's fields.

Hope this helps!



来源:https://stackoverflow.com/questions/22518594/java-populating-scanner-with-default-value-on-scanner-nextline

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!