Boolean Methode wirft Fehler aus

Loud Silence

Bekanntes Mitglied
Hi,
ich habe ein vollkommen banales Problem, finde aber keine Lösung dafür.
Ich habe folgende Mehtode:

Java:
	public static boolean checkCol(int x, int val){
		for(int y = 0;y < 9; y++ ){
			if (Field [x][y] == val){
			return false;
			}		
		}
		
	}

Java beschwert sich aber, dass kein Return Statement vorhanden sei. Liegt das an der if-Schleife und wenn ja, wie kann ich es lösen?
 
Moin,

stimmta ja auch :lol:

Nun ja, zumindest für den Fall, dass Du nie FALSE zurückgeben musst !!
[EDIT]
Du musst in einem solchen Fall IMMER einen bool'schen Wert zurückgeben !!
[/EDIT]

Füge mal VOR der for-Schleife ein return true; ein !!

Gruß
Klaus
 
Zuletzt bearbeitet:
Du musst bei einer Methode mit Rückgabewert immer einen return wert haben, egal was passiert.

Wenn field[x][y] nicht == val ist, dann springt er nicht in den if Zweig und du hast gar keinen Return wert. Sprich du musst den else Zweig dazu schreiben.
 
Öhm, damit sieht er die Methode aber als beendet an und erkennt den ganzen Rest als Fehler.

Java:
	public static boolean checkCol(int x, int val){
		return true;
		for(int y = 0;y < 9; y++ ){
			if (Field [x][y] == val){
			return false;
			}		
		}
		
	}
 
Moin,

stimmta ja auch :lol:

Nun ja, zumindest für den Fall, dass Du nie FALSE zurückgeben musst !!
[EDIT]
Du musst in einem solchen Fall IMMER einen bool'schen Wert zurückgeben !!
[/EDIT]

Füge mal VOR der for-Schleife ein return true; ein !!

Gruß
Klaus

Was soll das bringen? Wenn er davor ein return true einträgt, dann bricht die Methode doch sofort ab und die ganze for schleife inklusiver der If Abfrage ist überflüssig?

Mach einfach
Code:
public static boolean checkCol(int x, int val){

        for(int y = 0;y < 9; y++ ){

            if (Field [x][y] == val){

            return false;

            } 
          
              return true;
              

        }

        

    }

Somit hast du auf jedenfall einen return wert drin. Egal ob field[x][y] == val oder =! val
 
Zuletzt bearbeitet:
Wegen der If-Schleife habe ich einen Link für dich: hier

Egal was in die Methode rein kommt, du brauchst IMMER einen Rückgabe-Wert. Und weil du den für den Fall, dass dein IF nicht greift nicht hast, meckert der Compiler.

Ich denke du bekommst es selbst hin, den fehlenden Rückgabe-Wert einzufügen. :rtfm: Das muss dir keiner von uns vorsagen. Überlege mal ein bischen und wenn du gar nicht drauf kommst, kannst du dich ja nochmal melden. 😉

EDIT: Okay, dann eben kein Lerneffekt... :noe:
 
Tut mir Leid aber Ihre Lösung bequiet funktioniert nicht.
Es ist angeblich immer noch kein return statement vorhanden.
Und es liegt an der for-Schleife, denn ohne die funktioniert es...
 
Zuletzt bearbeitet:
Tut mir Leid aber Ihre Lösung bequiet funktioniert nicht.
Es ist angeblich immer noch kein return statement vorhanden.
Bitte denke über deinen eigenen Code nach!

Wann wird in die Schleife gesprungen, wann nicht? Sind für beide Fälle ein return vorhanden?
Wann wird das IF angesprungen, wann das ELSE? Sind für beide Fälle ein return vorhanden?
 
Nein es liegt nicht an der for Schleife. Lass mal das else weg.. Braucht man auch gar nicht.. Mein Fehler.
 
Zuletzt bearbeitet:
Moin,

Was soll das bringen? Wenn er davor ein return true einträgt, dann bricht die Methode doch sofort ab und die ganze for schleife inklusiver der If Abfrage ist überflüssig?

ääh ... ja, das war die Hand schneller als das Hirn :lol:

ich meinte natürlich NACH der for-Schleife:bae:

Nun ja, sind hier heute auch gute 30° draußen (und hier im Büro vlt. 35°) 😀

Gruß
Klaus

[EDIT]
Code:
public static boolean checkCol(int x, int val)
{
        for(int y = 0;y < 9; y++ )
        {
            if (Field [x][y] == val)
            {
                    return false;
            } 
            return true;
        }
}
OHNE else ist dann aber nach dem ersten Vergleich auch sofort Schluß :idea:
[/EDIT]
 
Zuletzt bearbeitet:
Joa passiert halt. Wenn man selber programmiert passiert einem das eig. nicht.. man machts halt ohne drüber nach zu denken ^^

Teste hier halt auch net jeden code vorher.. Sollte ich vll mal machen.

Solls ja auch sein. Entweder true oder false. wenn if true ist gibt er false zurück und wenn if false ist gibt er true zurück. In wiefern das im code Sinn macht sei jetzt mal dahin gestellt ^^
 
Zuletzt bearbeitet:
Joa, das passt jetzt.
Hatte ich auch schon ausprobiert, hab aber den falschen Wert weitergegeben, weshalb er entgegen meiner Erwartung true ausgegeben hat.

Danke an alle, die sich die Zeit genommen haben :applaus:
Schönen Tag
LS
 
Joa passiert halt. Wenn man selber programmiert passiert einem das eig. nicht.. man machts halt ohne drüber nach zu denken ^^
Teste hier halt auch net jeden code vorher.. Sollte ich vll mal machen.
nun ja, bei wirklich komplexen Fragen kann das aber aufwendig werden 😉


Solls ja auch sein. Entweder true oder false. wenn if true ist gibt er false zurück und wenn if false ist gibt er true zurück. In wiefern das im code Sinn macht sei jetzt mal dahin gestellt ^^
hmm ... also für mich implziert die Schleife, dass ggf. ALLE Y-Werte geprüft werden sollen!
Der Sinn dabei ist ja eine ganz andere Frage 😛ueh: 😉

Gruß
Klaus
 

Neue Themen


Zurück
Oben