Gå til innhold

Printe Array uten komma og brackets


Anbefalte innlegg

Jeg har laga en class. Denn klassen oppretter et Array.

 

Metoden toString skal skrive ut Arrayet.

 

Jeg gjør som følger:

 

public String toString() {
return Arrays.toString(arrayet);
}
Når jeg kaller på metoden via
System.out.println(objektNavn.toString);
Så får jeg ut:
[1, 2, 3, 4, 5]
Hvordan får jeg ut:
1 2 3 4 5
Huff dette ble vel ikke verdens beste forklaring, men håper noen har noen gode forslag.
Lenke til kommentar
Videoannonse
Annonse

Alt du trenger å gjøre er å iterere over arrayet (for-løkke), og legge til elementet og et mellomrom bak. Siste runden trenger man ikke legge til mellomrom.

 

Slik ser Arrays.toString ut. Den har noen optimaliseringer, så den kunne vært "penere".

public static String toString(int[] a) {
        if (a == null)
            return "null";
        int iMax = a.length - 1;
        if (iMax == -1)
            return "[]";

        StringBuilder b = new StringBuilder();
        b.append('[');
        for (int i = 0; ; i++) {
            b.append(a[i]);
            if (i == iMax)
                return b.append(']').toString();
            b.append(", ");
        }
    }
Lenke til kommentar

Det der var funksjonen du kalte, den som gir [1, 2, 3, 4, 5]. Det var ikke ment som en løsning, mer som en inspirasjon.

 

En løsning kan være lignende dette: (utestet)

public String toString() {
    String resultatet = "";
    for (int i = 0; i < arrayet.length; i++) {
        resultatet += arrayet[i];
        if (i != (arrayet.length - 1)) { // ikke siste element
            resultatet += " ";
        }
    }
    return resultatet;
}

Ideen er å iterere over arrayet, legge til hver ting i stringen med mellomrom bak, men kun legge til mellomrom om det ikke er siste element.

 

I Java (og mange andre språk) er String "immutable". Det betyr at en String aldri egentlig kan endres på. Hver gang man endrer på en String så vil det bli opprettet en ny String med riktig innhold. Det kan være dumt om man trenger å endre på en String mange ganger i en loop, så da bruker man StringBuilder som ikke har det problemet.

Endret av Matsemann
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...