Manlulu Skrevet 25. januar 2014 Del Skrevet 25. januar 2014 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
Matsemann Skrevet 25. januar 2014 Del Skrevet 25. januar 2014 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
Manlulu Skrevet 25. januar 2014 Forfatter Del Skrevet 25. januar 2014 Jeg prøvd å copy paste, men funka ikke. Jeg er ikke helt med på hva som skjer. Hva er StringBuilder og append? Hvorfor laga du iMax? Vil gjerne lære meg dette Lenke til kommentar
Matsemann Skrevet 25. januar 2014 Del Skrevet 25. januar 2014 (endret) 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 25. januar 2014 av Matsemann Lenke til kommentar
Manlulu Skrevet 25. januar 2014 Forfatter Del Skrevet 25. januar 2014 Takk Nydelig kode. Den der var enkel å forstå. Jeg skal klare å jobbe med den Jeg har aldri hørt om StringBuilder. Får vel lese litt om det. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå