Datentypen Int Array in String umwandeln

abc123t

Mitglied
Hallo!
Wir haben eine Hausaufgabe bekommen, in der wir die Methode "toString", also Arrays.toString, selber implementieren sollen. Wir sollen keine vorgefertigten Java Methoden für Arrays verwenden, nur den Zugriff auf Arrays und die Länge des Arrays dürfen benutzt werden.

Ich habe schon eine For-Schleife gebaut, jedoch gibt sie mir nur "[1, 1, 1," aus. Was mache oder verstehe ich falsch?

Hier ist einmal der Zugriff in der Main-Methode (numbers ist mein Array und enthält 5,2,1)
Java:
for (int i = 0; length > i; i++) {
            String toString = toString(numbers);
            if(i==0){
            System.out.print("["+toString+", ");
            }else if( i<length){
                System.out.print(toString +", ");
            }
        }

und dies ist die Methode, hier passiert der Fehler, dass nur 1,1,1 ausgegeben wird.

Java:
static String toString(int[] numbers) {
        String arrToString = "";
        if (numbers == null) {
            arrToString = null;
        } else {
            for (int i = 0; i < numbers.length; i++) {
                int x = numbers[i];
                arrToString = Integer.toString(x);
            }
        }

        return arrToString;
    }
 

Flown

Administrator
Mitarbeiter
JDK Implementierung sieht so aus:
Java:
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(", ");
  }
}
 

VfL_Freak

Top Contributor
Moin,
um mal kurz auf Deinen Code einzugehen:

Hier ist einmal der Zugriff in der Main-Methode (numbers ist mein Array und enthält 5,2,1)
Java:
for (int i = 0; length > i; i++)   // 'length' wird vermutlich die Länge von 'numbers' sein, oder ??
{
            String toString = toString(numbers);
            if(i==0){
            System.out.print("["+toString+", ");
            }else if( i<length){
                System.out.print(toString +", ");
            }
        }

Java:
static String toString(int[] numbers) 
{
        String arrToString = "";
        if (numbers == null) {
            arrToString = null;
        } else {
            for (int i = 0; i < numbers.length; i++) {
                int x = numbers[i];
                arrToString = Integer.toString(x);  // !!!
            }
        }
        return arrToString;
}
Erstens ist hier eine der beiden for-Schleifen flüssiger als flüssig !! Also überflüssig :D
Laufe entweder in der Methode 'toString' durch Array oder an der aufrufenden Stelle (was ich besser finde, weil es lesbarer ist!).

Zweitens: in der Methode 'toString' überschreibst Du am Ende JEDESMAL die Variable 'arrToString' mit dem jeweils aktuellen Wert - ergo steht hier am Ende immer '1' drauf, was Deine Ausgabe erklärt !!

Gruß Klaus
 

Neue Themen


Oben