2017-02-22 4 views
0

Ich benutze Scanner, um durch einen Benutzereingabesatz zu verarbeiten, und wenn das Wort "hey" erscheint, wird es zum Scanner hinzugefügt. Also im Grunde ein Wort zählen. Wie kann ich aus dem Unendlichen, während brechen (scan.hasNext()) Schleife ohne wie etwas mitAusbrechen des Scanners hasNext() Schleife

if(scan.next().equals("exit") 

    break; 

Ich kann die Schleife auf diese Weise auszubrechen, weil ich Eingaben gegeben worden, dass ich nicht Veränderung.

public static void main(String args[]) { 
Scanner scan = new Scanner(System.in); 

String speedLimit; 
int c = 0; 
while(scan.hasNext()){ 
    if (scan.next().equals("hey")){  
     c++; 
    } 
} 

System.out.println(c); 

} 
+0

'while (scan.hasNext())' ist keine Endlosschleife. Es stoppt, wenn es das Ende der Eingabe erreicht. –

+0

Mögliches Duplikat von [Java - Wie bricht man mit whileNext() ab?] (Http://stackoverflow.com/questions/12806672/java-how-to-break-out-of-which-with-hasnext (Bedingung) –

+0

Die Verwendung von 'scan.next()' verbraucht ein Token. –

Antwort

0

Eine while-Schleife mit hasNext() wird nicht brechen, bis Sie eine End Of File Bedingung verwenden, wie unten gezeigt

while(scan.hasNext()){ 
    if(scan.next().equals("hey")){ 
    c++; 
    } 
    else if(scan.next().equals("exit")){ 
    break; 
} 

Wie Sie aus stdin lesen, entweder ein EOF-Zeichen erwarten (Strg + D unter Linux/Unix/Mac oder Strg + Z unter Windows) oder eine Bedingung, um aus der Schleife auszubrechen.

+0

Ich kann diese Methode nicht verwenden, da mir eine bestimmte Eingabe zugewiesen wurde. Die Eingabe hat eine Spezifikation von 255 Zeichen, wie kann ich das verwenden, um die Schleife zu stoppen? – Citation

+0

Sie lesen also die Daten aus einer Datei? – Akhil

+0

Ich muss kopieren und aus einer Textdatei einfügen und Scanner – Citation

0

Sie können while (true) für Endlos-Schleife gesetzt und es brechen, wenn es passt Ausfahrt

Scanner scan = new Scanner(System.in); 
    int c = 0; 
    while(true){ 
     if (scan.next().equals("exit")) 
     { 
      break; 
     } 
     else 
     {  
      c++; 
     } 
    } 
    System.out.println(c); 

Für Line/Wortanzahl, können Sie

String text=null; 
    while(true) 
    { 
    Scanner inputText = new Scanner(System.in); 
    int lineCount=0; 
    text= inputText.nextLine(); 
    if(text!=null) 
    { 
     lineCount++; 
    } 
    StringBuilder sb = new StringBuilder(); 
    sb.append(text); 

    int wordcount=sb.length(); 

    System.out.println("Text : "+text); 
    System.out.println("Number of Words:"+wordcount); 
    System.out.println("Number of Lines: "+lineCount); 
    System.out.println("Text afer removing white spaces :"+text.replaceAll(" ", "").length()); 
    } 
+0

verwenden Ich kann diese Methode nicht verwenden, da ich eine bestimmte Eingabe erhalten habe. Die Eingabe hat eine Spezifikation von 255 Zeichen, wie kann ich das verwenden, um die Schleife zu stoppen? – Citation

+0

Können Sie die Schleife nicht auf der Basis von Wagenrücklauf oder Zeilenvorschub unterbrechen? – Maverick

0

verwenden Wenn alles, was Sie brauchen zu tun ist Kopieren und Einfügen einer Textzeile in Ihr Programm als String-Literal ...

String msg = "hey you"; 
Scanner tokenizer = new Scanner(msg); 
int count = 0; 
while (tokenizer.hasNext()) { 
    if (tokenizer.next().equals("hey")) { 
     ++c; 
    } 
} 

Sie können den Scanner verwenden, um einen String zu tokenisieren. Ihre Schleife sollte enden.

Verwandte Themen