Wo müsste ich im Code eine Änderung vornehmen?

Diskutiere Wo müsste ich im Code eine Änderung vornehmen? im Allgemeine Java-Themen Bereich.
R

Reykja

Es wird am Anfang und am Ende von text das Zeichen tag so oft eingefügt, wie der String text lang ist.
addTags("A", ’?’) liefert ?A?
addTags("Hello!", ’:’) liefert ::::::Hello!::::::
-----------------------------------------------
"text0" wird bei mir richtig ausgegeben also ?A?
"text2" wiederum falsch also ::::Hello!:::::::: (weniger Doppelpunkte auf der linken Seite)
mir ist bewusst warum "text2" falsch ausgegeben wird, nur weiß ich nicht, wo ich im Code etwas ändern muss.

Java:
 private static void addTags(String text, char tag) {

        if (text.length() != 0){
            for (int i = 0; i < text.length() * 2; i++) {
                System.out.print(tag);
                if (i == text.length() / 2)
                    System.out.print(text);
            }
            System.out.println();
        }
    }

public static void main(String[] args) {
        String text0 = "A";
        String text2 = "Hello!";
        
        addTags(text0, '?');
        addTags(text2, ':');
}
 
Wurstkopp

Wurstkopp

"mir ist bewusst warum "text2" falsch ausgegeben wird"

Möchtest du es auch erklären? Und die Idee hinter der Bedingung
"if (i == text.length() / 2)"
solltest du noch mal erklären.
 
H

httpdigest

Warum löst du das Ganze nicht einfach mit zwei Schleifen?
Und eigentlich finde ich es immer relativ unschön, wenn solche "Utility"-Methoden I/O machen.
Ich würde in der Methode einen entsprechenden String zusammenbauen und diesen dann zurückgeben.
Der Aufrufer kann diesen dann, wenn er will, ausgeben.
Z.B.:
Java:
private static String repeat(char c, int n) {
  char[] cs = new char[n];
  Arrays.fill(cs, c); // <- Die Schleife steckt implizit hier drin
  return new String(cs);
}
public static String addTags(String text, char tag) {
  String repeated = repeat(tag, text.length());
  return repeated + text + repeated;
}
 
R

Reykja

@Wurstkopp
Es werden keine Zeichen mehr erzeugt, sobald i die Hälfte der Länge des Strings erreicht hat. Bei "Hello!" passiert das nach "Hell" also wenn i = 3 ist weshalb nur 4 Doppelpunkte erzeugt werden. Danach wird der String ausgegeben.

"if (i == text.length() / 2)"
war eine nicht zu Ende gedachte Idee. Wollte damit versuchen den String einzuschieben
 
H

httpdigest

allerdings überlege ich gerade wie ich die zweite Schleife machen müsste.
Genauso wie die erste Schleife: "Wiederhole das Zeichen 'tag' einfach text.length() Mal"
Also:
1. Schleife: Gib das Zeiche 'tag' text.length() Mal aus
2. Gib text aus
3. Schleife: Gib das Zeiche 'tag' text.length() Mal aus
 
Thema: 

Wo müsste ich im Code eine Änderung vornehmen?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben