String in umgekehrter Reihenfolge ausgeben

Alpinwhite

Aktives Mitglied
Hi, ich soll ein Programm schreiben, dass folgendes macht:

Ausgabe: Bitte geben Sie einen String ein:
Eingabe: Der erste Satz steht am Anfang. Der zweite Satz endet kleingeschrieben. Der dritte
Satz bildet den Schluss.

Ausgabe: Der invertierte String lautet:
Ausgabe: Anfang am steht Satz erste Der. Kleingeschrieben endet Satz zweite
Der. Schluss den bildet Satz dritte Der.

Also den String umdrehen. Das Wort an erster Stelle soll immer groß sein. Das ist mein Ansatz, aber er gibt mir garnichts aus Warum ist das so?

Java:
public class VA5 {

 
 
 
    public static void main(String[] args) {
    
    
        StringBuilder outputString= new StringBuilder();
       
        String satz;
        String wort;
    
    
        System.out.println("Bitte geben Sie einen String ein");
        String text=Input.readString();
        while(text.indexOf('.')>0);{
    
            satz=text.substring(0, text.indexOf('.'));
            text=text.substring(text.indexOf('.')+1);
        
            while(satz.lastIndexOf(' ')>0){
        
                wort=satz.substring(satz.lastIndexOf(' ')+1);
            
                outputString.append(wort);
                satz=satz.substring(0,  satz.lastIndexOf(' '));
            
            }
        
          System.out.print(sb);
        
        
        }
    
    
    
    
    
    
    
    
}
}
 
Zuletzt bearbeitet:
Input wird bei mir rot unterstrichen:
Java:
String text=Input.readString();

Da ist ein Semikolon fehl am Platz:
Java:
while(text.indexOf('.')>0);{

sb gibt es nicht:
Java:
System.out.print(sb);
 
Da hatten sich ein paar Fehler eingeschlichen, habe es ausgebessert. Input ist ein Package, dass wir bekommen haben für die Benutzereingaben. Das sollen wir so schreiben. Funktionieren tut es trotzdem noch nicht. Nachdem der String vom Benutzer eingegeben wurde passiert nichts.

Java:
public class VA5 {

  
  
  
    public static void main(String[] args) {
      
      
        StringBuilder outputString= new StringBuilder();
  
        String satz;
        String wort;
      
      
        System.out.print("Bitte geben Sie einen String ein: ");
        String text=Input.readString();
      
        while(text.indexOf('.')>0){
      
            satz=text.substring(0, text.indexOf('.'));
            text=text.substring(text.indexOf('.')+1);
          
            while(satz.lastIndexOf(' ')>0){
          
                wort=satz.substring(satz.lastIndexOf(' ')+1);
                outputString.append(wort);
              
      
            satz=satz.substring(0,  satz.lastIndexOf(' '));
              
            }
          
          
            System.out.print(outputString);
          
        }
      
      
      
      
      
      
      
      
      
}
}
 
Da ich dein Spezialpackage nicht habe habe ich text wie folgt deklariert:
Java:
String text = "Der erste Satz steht am Anfang. Der zweite Satz endet kleingeschrieben. Der dritte Satz bildet den Schluss.";

Ausgabe:
Code:
AnfangamstehtSatzersteAnfangamstehtSatzerstekleingeschriebenendetSatzzweiteAnfangamstehtSatzerstekleingeschriebenendetSatzzweiteSchlussdenbildetSatzdritte

Selbst mit Leerzeichen würde es wie folgt aussehen:
Code:
Anfang am steht Satz erste Anfang am steht Satz erste kleingeschrieben endet Satz zweite Anfang am steht Satz erste kleingeschrieben endet Satz zweite Schluss den bildet Satz dritte

Von dem fertigen Programm wird aber erwartet, dass es irgendwann folgendes ausgibt:
Code:
Anfang am steht Satz erste Der. Kleingeschrieben endet Satz zweite Der. Schluss den bildet Satz dritte Der.
 
Zuletzt bearbeitet:
Ja ok. Und da liegt ja mein eigentliches Problem. Ich bekommen den "." nicht dahin wo er vorher war, er wandert immer mit. Wie kann man das lösen?
 
Die Wörter stimmen jetzt zumindest. Habe das Programm umgeschrieben.

Java:
public class VA5 {

 
 
 
    public static void main(String[] args) {
     
     
        StringBuilder sb= new StringBuilder();

        System.out.print("Bitte geben Sie einen String ein");
     
        String s=Input.readString();
 
        String[] sarr=s.split(" ");
 
 
     
 
 
        for(int i=sarr.length-1;i>=0;i--){
            sb.append(sarr[i]);
            sb.append(" ");
        }
     
        Character.toUpperCase(sb.charAt(0));
        System.out.print(sb);
     
     
     
}
}
 
-.- Die Sätze sind jetzt in falscher Reihenfolge. Dein Programm gibt folgendes aus:
Code:
Schluss. den bildet Satz dritte Der kleingeschrieben. endet Satz zweite Der Anfang. am steht Satz erste Der
Selbst wenn die Punkte stimmen würden wäre es wie folgt:
Code:
Schluss den bildet Satz dritte Der. kleingeschrieben endet Satz zweite Der. Anfang am steht Satz erste Der.
Laut Beitrag #1 müsste das fertige Programm jedoch ausgeben:
Code:
Anfang am steht Satz erste Der. Kleingeschrieben endet Satz zweite Der. Schluss den bildet Satz dritte Der.
 

Zurück
Oben