2016-04-01 11 views
0

Ich versuche, ein Programm zu schreiben, das alle Teilzeichenfolgen der eingegebenen Zeichenfolge druckt. Zum Beispiel, wenn der Benutzer eingeben „Rum“ wird der Ausgang dieses:Stoppen einer for-Schleife ohne Pause

r 
u 
m 
ru 
um 
rum 

import java.util.Scanner; 

public class AllSubStrings 
{ 
public static void main(String[]args) 
{ 
    Scanner in = new Scanner(System.in); 
    System.out.print("Enter a string: "); 
    String str = in.next(); 
    String sub = ""; 

    for(int i=0; i<str.length(); i++) 
    { 
     for(int a=0; a<str.length() ; a++) 
     { 
      if(i+a+1>str.length())break; 
      sub = str.substring(a,i+a+1); 
      System.out.println(sub); 
     } 
    } 
} 
} 

Dieses Programm funktioniert perfekt, aber da wir nicht lernen, wie „Pause“ in den Klassen zu verwenden, ich bin auf der Suche nach etwas anderem. Jede Idee außer "Pause" ist willkommen.

Vielen Dank im Voraus.

+3

Wie wäre es mit dem Versuch, eine break-Anweisung hinzuzufügen? Sie scheinen zu wissen, was es tut, also versuchen Sie es. – JJF

+0

Hilfreicher Link: [Generierte geordnete Permutationen einer gegebenen Zeichenkette] (http://stackoverflow.com/questions/21143485/generating-ordered-permutations-of-a-iven-string) –

Antwort

0

Sie können zwei Bedingungen in der for Schleife haben

for(int a = 0; a < str.length() && i + a < str.length(); a++) 
{ 
    sub = str.substring(a,i+a+1); 
    System.out.println(sub); 
} 

Beachten Sie, dass i + a + 1 <= str.length() die gleiche wie i + a < str.length() ist

3

können Sie diesen while Schleifenzyklus anstelle von for:

int a = 0; 
while (a < str.length && i + a < str.length()) { 
    sub = str.substring(a, i + a + 1); 
    System.out.println(sub); 
    a++; 
} 

Auch ist es möglich, break mit return Aussage

1

berechnen, wie viele mögliche Teil dort für eine bestimmte Länge sein kann, zu ersetzen. Zum Beispiel Länge 1 = 1 Teilkette, Länge 2 = 3, Länge 3 = 6 und so weiter.

Dann Schleife für diese viele Male. Es sollte eine generische Formel geben, die Sie verwenden können, unabhängig davon, wie lang eine Eingabezeichenfolge ist.

1

Sie brauchen nicht eine Pause, diese Aufgabe zu tun.

int len = str.length(); 
    for (int i = 0; i < len; i++) { 
    for (int j = i; j < len; j++) { 
     System.out.println(str.substring(i, j + 1)); 
    } 
    }