2016-08-06 84 views
0
import java.util.ArrayList; 
import java.util.ListIterator; 
import java.util.Scanner; 
import java.util.StringTokenizer; 

public class N12 { 
    public String reverseWords(String s) { 

    String value = ""; 
    ArrayList list = new ArrayList(); 
    StringTokenizer st = new StringTokenizer(s); 
    StringBuilder sb = new StringBuilder(); 

    while (st.hasMoreTokens()) { 
     list.add(st.nextToken()); 
    } 


    ListIterator lt = list.listIterator(); 

    while (lt.hasPrevious()) { 
     String t = (String) lt.previous(); 
     System.out.println(t); 
     sb.append(t); 
    } 
    value = sb.toString(); 
    return value; 
} 

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

    String s1 = scan.nextLine(); 

    System.out.println(sol.reverseWords(s1)); 
} 

}unfitting Ausgabe von String-Manipulation

Ich möchte die Zeichenfolge als Wort für Wort umkehren. Ich habe die Zeichenfolge und speicherte sie mit StringTokenizer. Um die Zeichenfolge vom letzten Wort umzukehren, habe ich die hasPrevious() - und previous() -Methoden von ListIterator verwendet. Es zeigt nichts. Wenn ich stattdessen hasNext() und next() verwende, funktioniert es ordnungsgemäß.

(z) Eingang:
Ich bin zurück

Ausgang:
zurück ist ich

Antwort

2

Sie nicht hasPreviews verwenden können(), weil Sie am Anfang der Liste fängt. Sie müssen am Ende beginnen. Versuchen zu verwenden:

ListIterator lt = list.listIterator(list.size()); 
+0

Danke. Es funktioniert jetzt. –