2016-03-26 8 views
3

Ich möchte die gewünschten Ausgänge erhalten, wie hier Tests 1-4 und immer noch den Benutzer auffordern, die Tests mit dem Scanner scan = new Scanner (System.in) einzugeben. Mein Programm sagt außerhalb der Reichweite. Wie soll ich das beheben?Conditionals und Loops reverseword Was fehlt mir?

public static void main(String[] args){ 
    String word=""; 
    System.out.println("Enter a Word:"); 
    Scanner scan = new Scanner(System.in); 
    word= scan.next(); 
    for (int j=word.length(); j>=0; j--) { 
     System.out.println(word.substring(j-1, j)); 
    } 
} 
+0

Wahrscheinlich möchten Sie auch 'System.out.print()' verwenden, um alles auf der gleichen Linie zu halten. – apicellaj

Antwort

3
new StringBuilder(scan.next()).reverse().toString(); 
+0

Danke für die Hilfe. Ich schätze es :) –

+0

@ ImaniM.Jackson, können Sie meine Antwort akzeptieren, wenn es hilfreich war – Andrew

3

Try this:

for (int j=word.length(); j >=1; j--) 
    { 
    System.out.println(word.substring(j-1, j)); 
    } 

Erläuterung: In Ihrer for-Schleife j sollte nur Dekrement bis j> = 1. Wenn j = 1 Weil Sie Teilzeichenfolge (j-1, j) = Teilzeichenfolge (0, 1)

In Ihrem Fall, wenn j wird 0, Teilzeichenfolge (j-1, j) = Teilzeichenfolge (-1, 0)

Daher die Ausnahme, da String nicht -1 als Index hat.

+0

Danke für die Hilfe. Ich schätze es :) –

3

Der Fehler ist aufgrund der letzten Iteration der Schleife, wenn j=0 in diesem Fall Sie word.substring(j-1, j) dh word.substring(-1, 0) tun Sie diesen Fehler Geben.

Statt die Schleife ändern j>=1

String word = ""; 
System.out.println("Enter a Word:"); 
Scanner scan = new Scanner(System.in); 
word = scan.next(); 
System.out.println(); 
for (int j = word.length(); j >= 1; j--) { 
System.out.print(word.substring(j - 1, j)); 
} 

DEMO

+0

Danke für die Hilfe. Ich schätze es :) –

3

Ich sehe nicht den Punkt der Herstellung eines jedes Mal String. Einfache charAt (Index) würde tun.

Scanner scanner = new Scanner(System.in); 
String word = scanner.next(); 
for (int i = word.length() - 1; i >= 0; i--) { 
    System.out.print(word.charAt(i)); 
} 
+0

Danke für die Hilfe. Ich schätze es :) –