Zeichenketten

hos15

Aktives Mitglied
Hallo Liebe Java Freunde ich brauche dringend eure Hilfe. Ich schreibe in wenigen Tagen eine Klausur und ich verstehe diese Aufgabe nicht. Bitte um Hilfe.
 

Anhänge

  • Screenshot (109).png
    Screenshot (109).png
    99,8 KB · Aufrufe: 39

Viktim

Bekanntes Mitglied
Ich zeig dir mal den ersten Teil, dann kriegst du den 2ten bestimmt hin ;)
Java:
public static void main(String[] args) {
    String string = "tannenbaum";
    string = string.toUpperCase(); //Macht großbuchstaben
    for (int i = 1; i < string.length() + 1; i++) {
      System.out.println(string.substring(0, i)); //Gibt einen Teil des Strings aus also von 0 bis i
    }
  }
 

Viktim

Bekanntes Mitglied
Hallo, falls du den zweiten Teil nicht hinkriegen solltest, lad ich den Code davon hier auch hoch... :)
(Geht eigentlich wie der Erste, nur das du deinen Aktuellen SubString nochmal umdrehen musst)
Fertig ist er schon :D
 

hos15

Aktives Mitglied
Also habe die 1 so gelöst :
Java:
public static void main (String []args){
   

    String text ="tannenbaum";
   
    for(int i=0;i<1;i++){
        for(int j=1;j>i & j<11 ;j++){
        String umgewanndelt = text.toUpperCase();

        System.out.println(umgewanndelt.substring(i,j));
    }
           
           
   
    }

aber die Aufgabe 2 habe ich nur bis hier hin geschafft:
Java:
public static void main (String []args){
   

    String text ="tannenbaum";
    String [] text2= text.split("");
    String x;
for(int c =9;c>=0;c--){
    x=text2[c];
    System.out.println(x);
}
 

Joose

Top Contributor
Bei deiner Lösung zu Aufgabe 1 kannst du dir die äußere for-Schleife sparen (die sorgt nur dafür das der maximal 1x durchgeführt wird)
Und es reicht vor der Schleife den String 1x in Großbuchstaben umzuwandeln, nicht bei jedem Schleifendurchlauf.

Bei der Lösung zu Aufgabe 2:
Warum initialisierst du c mit 9?
Du solltest "x" nicht immer mit einem neuen Wert beschreiben sondern am besten den vorhandenen ergänzen.

Ansonsten hier noch ein Tipp wie man einen String umdreht: http://stackoverflow.com/questions/7569335/reverse-a-string-in-java
Bei Aufgabe 2 musst du ja nur das was du bei Aufgabe 1 gemacht hast in umgekehrter Reihenfolge davor stehen haben ;)
 

Joose

Top Contributor
Die Lösung zur Aufgabe 1 hat der Viktim schon gezeigt, er verwendet ebenfalls nur eine Schleife.
Bei deiner Lösung macht die äußere Schleife nichts wichtiges außer die Variable "i" zu initialisieren. Diese ist aber nicht wirklich notwendig (siehe Lösung von Viktim).
 

Joose

Top Contributor
Es ähnelt sehr dem Beispiel 1. Du musst nur diesen Teilstring den du ausgibst umdrehen und davor ausgeben.

Sprich: Anstatt direkt den Teilstring ausgeben zu lassen solltest du ihn in einer String Variable zwischenspeichern.
Danach umdrehen und ausgeben (wie man ihn umdreht dazu habe ich vorhin einen Link gepostet) und danach gibst du den normalen Teilstring aus
 

hos15

Aktives Mitglied
Ich verstehe nicht wie ich die Buchstaben drehen kann. Als Tipp habe ich ja bekommen ((Tipp: Buchstaben einzeln entnehmen und neu zusammensetzen)) und ja keine Ahnung wie ich das machen soll -.-
 

hos15

Aktives Mitglied
Mhhh etwa so
Java:
String text2 = text.replace("tannenbaum", "muabnennat");
    System.out.println(text2);

aber ist das jetzt geschummelt haha ?
 

Flown

Administrator
Mitarbeiter
Ein paar Tipps:
String konkatenieren: String s = "a" + "b"; //"ab"
Stringlänge: s.length()
Einzelne chars aus dem String: s.charAt(...)

Jetzt brauchst du nur noch eine Schleife von hinten nach vorne zu durchlaufen und es deinem String anhängen, dann ist das umgedreht.
 

hos15

Aktives Mitglied
Also geht es nicht so wie ich es gemacht habe schade :/
hab nur soviel geschafft
Java:
String text2;

for(int d=9;d>=0;d--){
    System.out.println(text.charAt(d));
   
   
}
 

hos15

Aktives Mitglied
Jetzt habe ich sowas
Java:
char text2;

for(int d=9;d>=0;d--){
   
     text2=text.charAt(d);
    System.out.print(text2);
   
   
}
 
X

Xyz1

Gast
Sorry, wenn ich mich nochmal einmische,
Java:
package javaapplication;

public class Temp {
    public static void main(String[] args) {
        String text = "Tannenbaum";
        text = text.toUpperCase();
        for (int i = 0; i < text.length(); i++) {
            System.out.println(text.substring(0, i + 1));
        }
        for (int i = 0; i < text.length(); i++) {
            String temp = new StringBuilder(text).reverse().toString();
            System.out.println("         ".substring(0, temp.length() - i - 1) /* ab hier wichtig: */ + temp.substring(temp.length() - i - 1, temp.length()) + text.substring(0, i + 1));
        }
    }
}

Code:
T
TA
TAN
TANN
TANNE
TANNEN
TANNENB
TANNENBA
TANNENBAU
TANNENBAUM
         TT
        ATTA
       NATTAN
      NNATTANN
     ENNATTANNE
    NENNATTANNEN
   BNENNATTANNENB
  ABNENNATTANNENBA
 UABNENNATTANNENBAU
MUABNENNATTANNENBAUM

Ich hab 9 Zeilen gebraucht.

Nicht ganz konform der Aufgabenstellung!!!!

Meinst du, es hat, nebenbei bemerkt, einen Sinn an der Klausur, wie du sagst, teilzunehmen, wenn du doch noch diese Schwierigkeiten hast?

Ich meine, ich kann 1.000 Seiten in 3 Tagen lesen +/& verstehen, aber das ist nicht bei jede so.

Grüße Leute
 
X

Xyz1

Gast
Nagut dann mal viel Erfolg. :)

Zur richtigen Lösung, du musst, wie richtig bemerkt, mit .charAt() auf einzelne Zeichen des Strings in der richtigen Abfolge/Reihenfolge zugreifen....

Ohne StringBuilder usw. Vielleicht 3 _innere_ Schleifen: Leerzeichen, Umgedrehtes, Nicht-Gedrehtes....
 

Viktim

Bekanntes Mitglied
Ich poste jetzt auch mal das was ich vorbereitet hab :D
Java:
public static void main(String[] args) {
    String string = "tannenbaum";
    string = string.toUpperCase();
    for (int i = 1; i < (string.length() + 1) / 2; i++) {
      String aktuellerSubstring = string.substring(0, i);
      String umgekehrterString = "";
      // Schleife läuft vom letzten Buchstaben zum ersten.
      for (int j = aktuellerSubstring.length() - 1; j >= 0; j--) {
        // Holt sich den Aktuellen Buchstaben und hängt ihn an den aktuellen String aus
        umgekehrterString = umgekehrterString + aktuellerSubstring.charAt(j);
      }
      // Ansonsten kannst du auch mit:
      // umgekehrterString = new StringBuilder(aktuellerSubstring).reverse().toString();
      // den String umdrehen

      System.out.println(umgekehrterString + aktuellerSubstring);
    }
  }
Und auch hier gilt wieder, wenn du eine Frage dazu hast, frag ;)
 

Cromewell

Top Contributor
Ich habe gerade auch mal was geschrieben:
Java:
public static void main(String[] args){
    String s = "Tannenbaum".toUpperCase();

    for(int i = 0; i < s.length(); i++){
        System.out.println(s.substring(0, i+1));
    }
    String rev = new StringBuilder(s).reverse().toString();
    for(int i = 0; i < rev.length(); i++){
        System.out.print(insertSpaces(rev.length()-i)+rev.substring(rev.length()-i-1 ,rev.length()));
        System.out.println(s.substring(0, i+1));
    }
}

private static String insertSpaces(int amount) {
    String spaces = "";
    for(int i = 0; i < amount; i++){
        spaces += " ";
    }
    return spaces;
}

Edit: die insertSpaces Medthode, falls man den String am Anfang durch args[0] oder so ersetzen will...
 

Neue Themen


Oben