# [Java] incompatible types



## chris_sit (1. Januar 2003)

Hi Leute,


ich quäl mich nuun ne ganze Weile an einer von unserem Prof gestellten ausgabe (haben vor  3 wochen mit java angefangen)..


wir sollen eine klasse Rational schreiben, die diverse funktionen liefert.. addieren/zahler&nenner ausgeben.. usw.. 

einige funktionen werden mit 
	
	
	



```
long zaehler()
```
 deklariert, bei 2 hingegen steht statt dem "normalen" datentyp 
	
	
	



```
Rational betrag()
```
, also die klasse selbst..

beim compilieren bekomm ich nun folgende fehlermeldung :

Rational.java:94: incompatible typ
found   : long
required: Rational

hier die funktion betrag()


```
public Rational betrag()
	{
		if (zaehler < 0)
			{ zaehler = -zaehler; }
		else {}
		return zaehler;
	}
```



um nen hinweis woran es liegen könnte wäre ich dankbar, die NG zu unserer vorlesung ist die tage recht schweigsam, deswegen versuch ich bei euch mein glück, thx & frohes neues jahr


chris


----------



## Christian Fein (2. Januar 2003)

Nun der in der Deklaration der Methode angebene Datentyp ist auch immer der den die Methode zurückgibt.


Dein Fehler ist:


```
public Rational betrag()
{
	if (zaehler < 0)
	{ zaehler = -zaehler; }
	else {}
	return zaehler;
}
```

zahler ist vom Datentyp long. Die Methode  (Funktionen gibts bei Java nicht) betrag() deklariert Rational als Rückgabewert du aber gibst long (zaehler) zurueck.

also es kommt jetzt drauf an was du zurück geben willst.
Ist es wirklich nur der Wert von zaehler dann ist die mehthode so richtig:

public long betrag() 
{
 ....

willst du aber eine Instanz dieser klasse zurückgeben (wovon ich jetzt mal weniger ausehe) dann sieht das so aus

public Rational betrag() {
       return this;
}

Weil this (also das Object selber) vom Datentyp Rational ist.


----------



## chris_sit (2. Januar 2003)

*DAU@work*

danke, das wars 

mit der instanz hat's geklappt.. return new Rational(...

perfekt 


[edit]


> nur wie mach ich das bei boolean werten?!
> 
> mein rückgabewert
> 
> ...



== & = sollte man zu unterscheiden wissen.. *peinlich*


----------

