Never-ending loop for user-populated array list
I need to write a method to get the car specifications entered by the user and add them to an arraylist. This needs to accept any number of specifications the user wants to enter, including none. This is my first post here, apologies for any bad grammar.
public static arraylist gettrim() { scanner t = new scanner(system.in); system.out.println("enter car trim"); arraylist<string> trim = new arraylist<>(); while (t.hasnext()) { trim.add(t.next()); } return trim; }
I think this condition will return false if a space is entered. Such continuous iteration can only be exited manually.
I also tried it
if (t.hasNext()) { trim.add(t.next()); } else { t.close(); }
This iterates once and returns the arraylist, but I need to be able to enter more. Changing the if or while condition to hasnextline() gives the same result, here I am using hasnext() because the car trim level has specific formatting expectations. I don't understand why hasnext() doesn't return false when no input is given.
Correct answer
It..No.
Think about it. How does a computer differentiate between a user who is thinking about what to type and may leave it until after lunch, and a user who is "done"? Fire up the webcam and do some AI analysis and see if the user looks like they've finished typing?
system.in
is not the keyboard. It is the "standard input of the jvm process", default, and at least, if you start your java application from the command line, set it to read from the keyboard. It doesn’t have to be:
java -jar myapp.jar </some/path/to/some/file.txt
Now system.in
is read from this file. The process cannot be read from the keyboard.
java -jar myapp.jar </dev/barcodescanner1
Now, presumably whenever you scan a barcode, the java application will receive the barcode just as if you entered the digits of the barcode and pressed "Enter" 1.
This depends on the "source of this input" to the "end". The file ends when the end of the file is reached.
It is impossible for the keyboard to "end" - therefore, .hasnext()
cannot return false
.
blank
You talked about "entering spaces" in your comments.
Then you don’t understand scanner
. You are in good company; this is probably the most misunderstood thing. If we look at the number of questions flooding stackoverflow, this is indeed the case.
scanner
has nothing to do with the keyboard.
\s . For example, any amount of white space.
public static void main(string[] args) { scanner s = new scanner(system.in); while (true) { system.out.println("token: ≥" + s.next()) + "≤"); } }
hello world!, then press enter and type
my name is lajos, you will see:
token: ≥hello≤ token: ≥world!≤ token: ≥my≤ token: ≥name≤ token: ≥is≤ token: ≥lajos≤
It is not possible to register or otherwise obtain the content of anything under "separator". You can't ask the scanner: How many blanks are there?
You also can't ask: "stop" when you encounter a space. No, spaces just separate one token from the next. For scanners, there is noany difference between pressing the enter key and pressing the space bar and then the enter key. This is all "1 or more whitespace characters" so are interchangeable and cannot be detected since this is about delimiters.
You may not want to use a scanner at all. system.in itself can certainly differentiate it.Solution 1
A common strategy is to mention some magic word that means "done" in the prompt. For example:
static void main(string[] args) throws exception { var s = new scanner(system.in); system.out.println("welcome to the fruit stand! enter the fruit you'd like to buy, one at a time:"); var basket = new arraylist<string>(); while (true) { system.out.print("fruit (type 'done' when done): "); string fruit = s.next(); if (fruit.equalsignorecase("done")) break; basket.add(fruit); } system.out.println("here's your basket: " + basket); }
Trench Scanner. Or at least, drop everything and just use
nextline, which interacts
very with all the other methods it has - choose one and only one (nextline, or Everything except
nextline):
static void main(string[] args) throws exception { var s = new scanner(system.in); system.out.println("welcome to the fruit stand! enter the fruit you'd like to buy, one at a time:"); var basket = new arraylist<string>(); while (true) { system.out.print("fruit (enter when done): "); string fruit = s.nextline(); if (fruit.isempty()) break; basket.add(fruit); } system.out.println("here's your basket: " + basket); }
/dev/ and cannot be piped into such a process. But, as an example, it works.
public static ArrayList getTrim() { Scanner t = new Scanner(System.in); System.out.println("Enter car trim"); ArrayList<String> trim = new ArrayList<>(); while (t.hasNext()) { if (!t.next().trim().equals("") { trim.add(t.next()); } else { t.close(); } } return trim; }
The above is the detailed content of Never-ending loop for user-populated array list. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Yes, H5 page production is an important implementation method for front-end development, involving core technologies such as HTML, CSS and JavaScript. Developers build dynamic and powerful H5 pages by cleverly combining these technologies, such as using the <canvas> tag to draw graphics or using JavaScript to control interaction behavior.

The method of customizing resize symbols in CSS is unified with background colors. In daily development, we often encounter situations where we need to customize user interface details, such as adjusting...

Regarding the reasons and solutions for misaligned display of inline-block elements. When writing web page layout, we often encounter some seemingly strange display problems. Compare...

How to achieve the 45-degree curve effect of segmenter? In the process of implementing the segmenter, how to make the right border turn into a 45-degree curve when clicking the left button, and the point...

How to use JavaScript or CSS to control the top and end of the page in the browser's printing settings. In the browser's printing settings, there is an option to control whether the display is...

Real-time Bitcoin USD Price Factors that affect Bitcoin price Indicators for predicting future Bitcoin prices Here are some key information about the price of Bitcoin in 2018-2024:

Tips for Implementing Segmenter Effects In user interface design, segmenter is a common navigation element, especially in mobile applications and responsive web pages. ...

Compatibility issues of multi-row overflow on mobile terminal omitted on different devices When developing mobile applications using Vue 2.0, you often encounter the need to overflow text...