toString-Methode in Verbindung mit varArgs-Konstruktor

JuriW

Aktives Mitglied
Guten Morgen zusammen,
ich möchte gerne Werte eines Objektes, welches mit varArgs-Konstruktor erstellt wurde, ausgeben.

Code:
public class Polynom {
    public double[] koeffizienten;

    public Polynom(double... koeffizienten) {
        this.koeffizienten = koeffizienten;
    }

    public double[] getKoeffizienten() {
        return koeffizienten;
    }

    public static void main(String[] args) {

        Polynom p = new Polynom(-3.0, -1.0, 0.0, 0.0, 1.0);
        System.out.println(p);
        Polynom q = new Polynom(-2.5, 2.0);
        System.out.println(q);
    }
   
    public String toString() {
        return getKoeffizienten() + ", ";
    }
}

Ich kriege jedoch nur die Hashadresse ("
[D@2d9b6e") und das ", " ausgegeben. Ich darf jedoch nichts an der Main-Methode ändern.
Wie kann ich die Zahlen jedes Polynoms so ausgeben?: "-3.0, -1.0, 0.0, 0.0, 1.0"

Vielen Dank!
 
Musst du auch nicht. Du musst nur die toString()-Methode verändern.
Leg dir einen String in der Methode an, durchlauf das Arrays und füg jeden Wert - mit einem Komma getrennt - an den String an.
 
Code:
public String toString() {
        String str = "";
        for(int i = 0; i < this.koeffizienten.length; i++) {
        str  += koeffizienten[i] + ", ";
        }
        return str;
    }

Hab es nun so geschafft! Vielen Dank für deine Hilfe und noch einen schönen Tag!
 
@JuriW
Geht aber wesentlich geschmeidiger:
Java:
double[] array = {1, 3, 12, 323, -1};
String s = Arrays.toString(array);
System.out.println(s);

/** Konsolenausgabe */
[1.0, 3.0, 12.0, 323.0, -1.0]
Dem nach:
Java:
@Override
public String toString()
{
    return Arrays.toString(array);
}
 
Wenn man schon einen String replacen muss, dann kann man ihn doch gleich ordentlich bauen.
Java:
StringJoiner joiner = new StringJoiner(", ");
for(double d : doubles) {
  joiner.add(Double.toString(d);
}
return joiner.toString();
 
Wenn man schon einen String replacen muss, dann kann man ihn doch gleich ordentlich bauen.
Java:
StringJoiner joiner = new StringJoiner(", ");
for(double d : doubles) {
  joiner.add(Double.toString(d);
}
return joiner.toString();

Kann man, muss man aber nicht, wenn es sein Zweck erfüllt.
Viele Wege führen nach Rom ...
 

Zurück
Oben