# Objektorientierte Programmierung Fehler



## mikyyy (2. Jan 2019)

public class Farben{

    private int rot;
    private int gruen;
    private int blau;


public Farben(int rot,int gruen,int blau){

    this.rot= rot;
    this.gruen= gruen;
    this.blau= blau;
}
public Farben invertiere(){
return new Farben(255 - rot, 255 - gruen, 255 - blau);
}
}



public class FarbenTest {
    public static void main(String[] args) {

            Farben f2 = new Farben (10,0,0);
            System.out.println(f2.invertiere());

    }
}

kann mior jmd bitte erklären wieso ich hier so etwas raus kriege : Farben@15db9742  ?
anstatt 245,255,255


----------



## Robat (2. Jan 2019)

Das ist der Hashcode des Objektes... Du musst die toString() Methode überschreiben


----------



## mikyyy (2. Jan 2019)

Robat hat gesagt.:


> Das ist der Hashcode des Objektes... Du musst die toString() Methode überschreiben


 
und wie würde die toString() Methode aussehen?


----------



## Robat (2. Jan 2019)

Was willst du denn ausgeben? Es muss halt eine String-Repräsentation deines Objektes sein...
Zum Beispiel:

```
@Override
public String toString() {
    return "blabliblubb";
}
```


----------



## mikyyy (2. Jan 2019)

Robat hat gesagt.:


> Was willst du denn ausgeben? Es muss halt eine String-Repräsentation deines Objektes sein...
> Zum Beispiel:
> 
> ```
> ...



ich habe die Farben rot, grün und blau und soll von der Farbe rot(-> 255) - 10 abziehen.
Ausgabe: 245255255


----------



## flopalko (2. Jan 2019)

Dann überleg dir mal welche Werte du wie in den String des return statements schreiben musst.


----------



## Robat (2. Jan 2019)

```
return String.format("%d,%d,%d", rot, gruen, blau);
```


----------



## mihe7 (2. Jan 2019)

Sofern die Farben keine negativen Werte annehmen sollen (vermutlich zwischen 0 und 255), gibt es noch ein kleines Problem mit Deiner Klasse:

```
System.out.println(new Farben(300, 0, 0));
System.out.println(new Farben(300, 0, 0).invertiere());
```


----------



## flopalko (2. Jan 2019)

mihe7 hat gesagt.:


> Sofern die Farben keine negativen Werte annehmen sollen (vermutlich zwischen 0 und 255), gibt es noch ein kleines Problem mit Deiner Klasse:
> 
> ```
> System.out.println(new Farben(300, 0, 0));
> ...


Sinnvollerweise sollte man beim Konstruktor prüfen, ob die übergebenen Werte 0<=x<=255 sind. Dann kann dieser Fall nie auftreten.


----------

