Inhaltsverzeichnis
Richtige Antwort
Sie haben in Ihren Kommentaren über das „Eingeben von Leerzeichen“ gesprochen.
Eine gängige Strategie besteht darin, in der Eingabeaufforderung ein Zauberwort zu erwähnen, das „erledigt“ bedeutet. Zum Beispiel:
Grabenscanner. Oder lassen Sie zumindest alles fallen und verwenden Sie einfach nextline, das
Heim Java Endlose Schleife für vom Benutzer gefüllte Array-Liste

Endlose Schleife für vom Benutzer gefüllte Array-Liste

Feb 05, 2024 pm 10:00 PM
overflow

Frageninhalt

Ich muss eine Methode schreiben, um die vom Benutzer eingegebenen Fahrzeugspezifikationen abzurufen und sie einer Array-Liste hinzuzufügen. Dies muss eine beliebige Anzahl von Spezifikationen akzeptieren, die der Benutzer eingeben möchte, einschließlich keiner. Dies ist mein erster Beitrag hier, bitte entschuldigen Sie die schlechte Grammatik.

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;

}
Nach dem Login kopieren

Ich denke, diese Bedingung wird „false“ zurückgeben, wenn ein Leerzeichen eingegeben wird. Eine solche kontinuierliche Iteration kann nur manuell beendet werden.

Ich habe es auch versucht

if (t.hasNext()) {
trim.add(t.next());
}

else {
t.close();
}
Nach dem Login kopieren

Dies wird einmal wiederholt und gibt die Arrayliste zurück, aber ich muss in der Lage sein, mehr einzugeben. Das Ändern der if- oder while-Bedingung in hasnextline() führt zum gleichen Ergebnis. Hier verwende ich hasnext(), da die Ausstattungsvariante des Autos bestimmte Formatierungserwartungen hat. Ich verstehe nicht, warum hasnext() nicht false zurückgibt, wenn keine Eingabe erfolgt.


Richtige Antwort


Es..Nein.

Denken Sie darüber nach. Wie unterscheidet ein Computer zwischen einem Benutzer, der darüber nachdenkt, was er eingeben soll, und damit möglicherweise bis nach dem Mittagessen wartet, und einem Benutzer, der „fertig“ ist? Starten Sie Ihre Webcam und führen Sie eine KI-Analyse durch, um zu sehen, ob der Benutzer so aussieht, als ob er mit der Eingabe fertig wäre.

Keine Tastatursystem.in. Es ist die „Standardeingabe des JVM-Prozesses“, Standard, und wenn Sie Ihre Java-Anwendung über die Befehlszeile starten, stellen Sie sie zumindest so ein, dass sie von der Tastatur liest. Es muss nicht sein:

java -jar myapp.jar </some/path/to/some/file.txt
Nach dem Login kopieren
Jetzt

liest aus dieser Datei. Der Vorgang kann nicht über die Tastatur gelesen werden.

java -jar myapp.jar </dev/barcodescanner1
Nach dem Login kopieren
system.inJetzt empfängt die Java-Anwendung vermutlich jedes Mal, wenn Sie einen Barcode scannen, den Barcode genau so, als ob Sie die Ziffern des Barcodes eingegeben und die Eingabetaste gedrückt hätten

1

. Es hängt von der „Quelle dieser Eingabe“ bis zum „Ende“ ab. Die Datei endet, wenn das Ende der Datei erreicht ist.

Die Tastatur kann nicht „über“ sein

– also, . .hasnext() 不可能返回 false Leer

Sie haben in Ihren Kommentaren über das „Eingeben von Leerzeichen“ gesprochen.

Dann verstehst du es nicht

. Sie befinden sich in guter Gesellschaft; das wird wahrscheinlich am meisten missverstanden. Wenn wir uns die Anzahl der Fragen ansehen, die den Stackoverflow überschwemmen, ist dies tatsächlich der Fall.

scanner

hat nichts

mit der Tastatur scanner zu tun. Der Scanner nimmt einfach jede Texteingabequelle und teilt sie in Abschnitte auf. Blöcke werden „Tokens“ genannt und „Tokens“ werden durch „den gesamten Text zwischen Trennzeichen“ definiert. Trennzeichen werden wiederum durch reguläre Ausdrücke definiert, der standardmäßig verwendete reguläre Ausdruck ist

. Zum Beispiel jede Menge Leerzeichen.

s+Deshalb:

public static void main(string[] args) {
  scanner s = new scanner(system.in);
  while (true) {
    system.out.println("token: ≥" + s.next()) + "≤");
  }
}
Nach dem Login kopieren

Wenn Sie diesen Befehl ausführen und Folgendes in die Befehlszeile eingeben:

, wird Folgendes angezeigt:

token: ≥hello≤
token: ≥world!≤
token: ≥my≤
token: ≥name≤
token: ≥is≤
token: ≥lajos≤
Nach dem Login kopieren
hello world!,然后按 enter 键,并输入 my name is lajosHinweise zum Scanner:

Es ist nicht möglich

, den Inhalt von irgendetwas unter dem „Trennzeichen“ zu registrieren oder anderweitig zu erhalten. Man kann den Scanner nicht fragen: Wie viele Rohlinge sind da? Sie können auch nicht fragen: „Stoppen“, wenn Sie auf ein Leerzeichen stoßen. Nein, Leerzeichen trennen nur einen Token vom nächsten. Bei einem Scanner gibt es

keinen Unterschied

zwischen dem Drücken der Eingabetaste und dem Drücken der Leertaste und dann der Eingabetaste. Dies sind alles „1 oder mehrere Leerzeichen“, die austauschbar sind und nicht erkannt werden können, da es sich um Trennzeichen handelt. Möglicherweise möchten Sie überhaupt keinen Scanner verwenden. system.an sich kann es sicherlich differenzieren.

Lösung 1

Eine gängige Strategie besteht darin, in der Eingabeaufforderung ein Zauberwort zu erwähnen, das „erledigt“ bedeutet. Zum Beispiel:

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);
}
Nach dem Login kopieren

Lösung 2

Grabenscanner. Oder lassen Sie zumindest alles fallen und verwenden Sie einfach nextline, das

sehr

mit allen anderen verfügbaren Methoden interagiert – wählen Sie eine und nur eine (nextline, oder außer < Everything außer code>nextline): nextline,它与它拥有的所有其他方法的交互非常 - 选择一个且仅一个(nextline,或除 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);
}
Nach dem Login kopieren

[1] Tatsächlich sehen und verhalten sich die meisten Barcode-Scanner wie Tastaturen und haben kein Gerät, weil es in

nicht vorhanden ist / und nicht in einen solchen Prozess eingespeist werden kann. Aber zum Beispiel funktioniert es. /dev

Sie können Folgendes versuchen:

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;

}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEndlose Schleife für vom Benutzer gefüllte Array-Liste. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Preis von Bitcoin seit seiner Geburt 2009–2025. Die umfassendste Zusammenfassung der historischen BTC-Preise Der Preis von Bitcoin seit seiner Geburt 2009–2025. Die umfassendste Zusammenfassung der historischen BTC-Preise Jan 15, 2025 pm 08:11 PM

Seit seiner Einführung im Jahr 2009 hat sich Bitcoin zu einem führenden Unternehmen in der Welt der Kryptowährungen entwickelt und sein Preis hat enorme Schwankungen erfahren. Um einen umfassenden historischen Überblick zu bieten, stellt dieser Artikel Bitcoin-Preisdaten von 2009 bis 2025 zusammen und deckt wichtige Marktereignisse, Änderungen der Marktstimmung und wichtige Faktoren ab, die die Preisbewegungen beeinflussen.

Überblick über den historischen Preis von Bitcoin seit seiner Geburt. Vollständige Sammlung historischer Preistrends von Bitcoin. Überblick über den historischen Preis von Bitcoin seit seiner Geburt. Vollständige Sammlung historischer Preistrends von Bitcoin. Jan 15, 2025 pm 08:14 PM

Bitcoin hat als Kryptowährung seit seiner Einführung erhebliche Marktvolatilität erlebt. Dieser Artikel bietet einen Überblick über den historischen Preis von Bitcoin seit seiner Geburt, um den Lesern zu helfen, seine Preistrends und Schlüsselmomente zu verstehen. Durch die Analyse der historischen Preisdaten von Bitcoin können wir die Einschätzung des Marktes über seinen Wert und die Faktoren, die seine Schwankungen beeinflussen, verstehen und eine Grundlage für zukünftige Investitionsentscheidungen schaffen.

Eine Liste der historischen Preise seit der Geburt von Bitcoin BTC Historical Price Trend Chart (neueste Zusammenfassung) Eine Liste der historischen Preise seit der Geburt von Bitcoin BTC Historical Price Trend Chart (neueste Zusammenfassung) Feb 11, 2025 pm 11:36 PM

Seit seiner Gründung im Jahr 2009 hat der Preis von Bitcoin im November 2021 auf 69.044,77 USD auf 69.044,77 USD gestiegen und im Dezember 2018 auf 3.191,22 USD gesunken. Ab Dezember 2024 hat der jüngste Preis 100.204 USD überschritten.

Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Feb 15, 2025 pm 07:12 PM

Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

Die vollständigste Zusammenfassung der historischen Preisdetails seit der Geburt von Bitcoin (die neueste Version von 2025) Die vollständigste Zusammenfassung der historischen Preisdetails seit der Geburt von Bitcoin (die neueste Version von 2025) Feb 15, 2025 pm 06:45 PM

Wichtiger Knoten für Bitcoin Historical Price 3. Januar 2009: Genesis Block wurde generiert, das erste Bitcoin wurde mit einem Wert von USD 0 generiert. 5. Oktober: Als erste Bitcoin -Transaktion kaufte ein Programmierer zwei Pizzen mit 10.000 Bitcoins, entspricht 0,008 USD. 9. Februar 2010: Die Mt. Gox Exchange ging online und wurde zur Hauptplattform für den frühen Bitcoin -Handel. 22. Mai: Bitcoin bricht zum ersten Mal 1 $ durch. 17. Juli: Bitcoin-Preis fiel auf 0,008 USD und erreichte ein Allzeittief. 9. Februar 2011: Bitcoin Price bricht zum ersten Mal 10 US -Dollar durch. 10. April: Mt. Go

Wie kann die technische Fragen und Antworten in der Chatgpt -Ära auf Herausforderungen reagieren? Wie kann die technische Fragen und Antworten in der Chatgpt -Ära auf Herausforderungen reagieren? Apr 01, 2025 pm 11:51 PM

Die technische Q & A -Community in der Chatgpt -Ära: SegmentFaults Antwortstrategie Stackoverflow ...

In einem Artikel erfahren In einem Artikel erfahren Feb 15, 2025 pm 10:06 PM

Die Finanzierungszinsen der virtuellen Währung sind Gebühren für Händler, die Positionen im Handel mit Derivaten innehatten. Es spiegelt eine Prämie oder einen Rabatt zwischen dem Spot -Marktpreis und dem Futures -Vertragspreis nach Ablauf des Vertrags wider. Wenn der Spotpreis höher als der Futures -Preis ist, ist der Kapitalzins negativ, was bedeutet, dass Händler, die Kurzpositionen an Händlern zahlen, die Länge von Händlern zahlen. Im Gegenteil, wenn der Spotpreis niedriger als der Futures -Preis ist, ist der Kapitalzins positiv, was bedeutet, dass Händler, die lange Positionen in Anspruch nehmen, Gebühren für Händler zahlen, die kurze Positionen annehmen.

Wie verwendet ich das Clip-Pfad-Attribut von CSS, um den 45-Grad-Kurveneffekt des Segmenters zu erreichen? Wie verwendet ich das Clip-Pfad-Attribut von CSS, um den 45-Grad-Kurveneffekt des Segmenters zu erreichen? Apr 04, 2025 pm 11:45 PM

Wie kann man den 45-Grad-Kurveneffekt des Segmenters erreichen? Bei der Implementierung des Segmenters verwandeln Sie den rechten Rand in eine 45-Grad-Kurve, wenn Sie auf die linke Schaltfläche klicken, und der Punkt ...