|
You last visited: Today at 01:57
Advertisement
Java: missing return statement
Discussion on Java: missing return statement within the General Coding forum part of the Coders Den category.
02/08/2013, 19:37
|
#1
|
elite*gold: 1
Join Date: Oct 2009
Posts: 77
Received Thanks: 3
|
Java: missing return statement
hallo, ich habe folgenden quelltext und er lässt sich einfach nicht kompilieren, wo steckt der Fehler?
Code:
public boolean Zeile(int zeile, int zahl)
{
for (int i = 0; i < 9; i++)
{
if (feld[zeile][i] == zahl)
{
return false;
}
else
{
return true;
}
}
}
Ich returne ja true/false wenn die übergebene zahl im Feld vorhanden ist, deswegen verstehe ich nicht wiso er trozdem ein return statement will?
mfg
|
|
|
02/08/2013, 20:10
|
#2
|
elite*gold: 12
Join Date: Jan 2011
Posts: 676
Received Thanks: 44
|
Du nimmst ja wahrscheinlich Eclipse oder Netbeans. Deshalb kannst du ja sehen wo diese Programme das return Statement setzen, nämlich hinter die for-Schleife.
Das liegt daran, dass die for-Schleife nicht immer ausgelöst werden muss (zwar ist es in diesem Fall so.)
Deshalb muss hinter die for-Schleife auch ein return Statement.
Methoden fangen mit nem kleinen Buchstaben an!!!
|
|
|
02/08/2013, 20:19
|
#3
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Dein Code macht eh keinen Sinn. Wenn du die for-Schleife weglassen würdest und das i durch eine 0 ersetzen würdest, ergebe das dasselbe Verhalten wie dein Code jetzt.
|
|
|
02/08/2013, 20:27
|
#4
|
elite*gold: 1
Join Date: Oct 2009
Posts: 77
Received Thanks: 3
|
Ich habe jetz einfach mal ein return false unter die for schleife gesetzt, gibt er mir dann trozdem true falls die zahl in der matrix vorhanden ist oder wird der boolean wert dann wieder zu false überschrieben?
Warum macht der code keinen sinn ?
Btw ich benutze BlueJ, da wir in der Schule damit programmieren und ich der Übersicht halber nicht auf exlipse oder netbeans umsteigen wollte.
|
|
|
02/08/2013, 20:28
|
#5
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Quote:
|
Warum macht der code keinen sinn ?
|
Nimm nen Debugger zur Hand und steppe durch den Code, wenn du 's nicht siehst.
|
|
|
02/08/2013, 20:33
|
#6
|
elite*gold: 1
Join Date: Oct 2009
Posts: 77
Received Thanks: 3
|
Hier mal der ganze Code, kannst du mir sagen was daran falsch ist bzw was schlecht umgesetzt/durchdacht ist ? Wär echt klasse weil ich weis langsam nichtmehr weiter..
Code:
import java.util.*;
public class Sudoku
{
//Felder:
private int [][] feld; //Adjazenzmatrix (quasi späteres Sudoku da 9x9)
private int [] anfangszahlen; //Feld aus dem zufällig generierte Zahlen von 1-9 ins Feld übernommen werden können
private int [] doppelt; //Feld um Duplikate in anfangszahlen zu vermeiden
Random zufall = new Random();
public Sudoku()
{
feld = new int [9][9];
anfangszahlen = new int [9];
doppelt = new int [9];
//doppelt-Feld füllen:
for (int i = 0; i < doppelt.length; i++)
{
doppelt [i] = i + 1;
}
//Anfangszahlen generieren:
for (int i = 0; i < anfangszahlen.length; i++)
{
int wert = zufall.nextInt(9);
if (doppelt[wert] > 0)
{
anfangszahlen[i] = doppelt[wert];
doppelt[wert] = -1;
}
else
{
i = i - 1;
}
}
//Matrix füllen:
// I = Zeile, J = Spalte!!
for (int i = 0; i < feld.length; i++)
{
feld[i][0] = anfangszahlen[i];
}
}
// Methode um Existenz der generierten zahlen in der 1. zeile zu sehen
public void ausgeben()
{
for (int i = 0; i < feld.length; i++)
{
System.out.print(" "+feld[0][i]);
}
}
//Methoden um zu überprüfen ob die gesuchte Zahl in der angegebenen Zeile/Spalte/Karee schon enthalten ist, gibt false aus wenn NICHT
public boolean Zeile(int zeile, int zahl)
{
for (int i = 0; i < feld.length; i++)
{
if (feld[zeile][i] == zahl)
{
return true;
}
else
{
return false;
}
}
return false;
}
public boolean Spalte(int spalte, int zahl)
{
for (int i =0; i < feld.length; i++)
{
if ( feld [i][spalte] == zahl)
{
return true;
}
else
{
return false;
}
}
return false;
}
//Um Karee auszuwählen wird der Wert
public boolean Karee(int h,int v, int zahl)
{
}
}
|
|
|
02/08/2013, 20:37
|
#7
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Ich schau mir jetzt nicht deinen ganzen Code an, weil mir dazu die Zeit und Lust fehlt, aber in folgender Methode:
Code:
public boolean Spalte(int spalte, int zahl)
{
for (int i =0; i < feld.length; i++)
{
if ( feld [i][spalte] == zahl)
{
return true;
}
else
{
return false;
}
}
return false;
}
Wird er die for-Schleife nur einmal durchlaufen. Im ersten Durchlauf ist i=0. Er überprüft ob feld[i][zeile] gleich der Zahl ist. Wenn ja returned er true. Sonst false. Das wars. Return = unmittelbares Verlassen der Methode.
EDIT: Hab die falsche Methode rauskopiert. Bei der Zeilen-Methode ist das aber ähnlich.
|
|
|
02/08/2013, 20:42
|
#8
|
elite*gold: 1
Join Date: Oct 2009
Posts: 77
Received Thanks: 3
|
ah also müsste wenn die zahl bei i = 0 nicht die übergebene zahl ist, i um 1 erhöht werden und nochmal geguckt werden ob gleich zahl ist sprich else fliegt komplett raus
|
|
|
02/08/2013, 21:15
|
#9
|
elite*gold: 12
Join Date: Jan 2011
Posts: 676
Received Thanks: 44
|
Ich glaube bei der Methode "Zeile" solltest du
Code:
for (int i = 0; i < feld[zeile].length; i++)
schreiben.
Ist aber egal da das Feld ja 9x9 ist.
|
|
|
02/08/2013, 21:36
|
#10
|
elite*gold: 1
Join Date: Oct 2009
Posts: 77
Received Thanks: 3
|
Quote:
Originally Posted by Devil0s
Ich glaube bei der Methode "Zeile" solltest du
Code:
for (int i = 0; i < feld[zeile].length; i++)
schreiben.
Ist aber egal da das Feld ja 9x9 ist.
|
Jow ich hätte auch 9 reinschreiben können aber ich hab mir gedacht wenn ich mal irgentwann lust habe kp 12 oder 16 Felder zu generieren dann muss ich nicht überall die Feldlänge umändern.
Und sudoku felder sind ja grundsätzlich symmetrisch.
Aber das stimmt jetz schon so wenn ich bei der if bedingung das else komplett rausnehme, dann such er mir schon alle bis 9 oder falls er das richtige findet, durch ??
mfg
|
|
|
02/08/2013, 22:39
|
#11
|
elite*gold: 12
Join Date: Jan 2011
Posts: 676
Received Thanks: 44
|
Du hast doch das dann doch so ungefähr so oder??
Code:
public boolean Zeile(int zeile, int zahl)
{
for (int i = 0; i < 9; i++)
{
if (feld[zeile][i] == zahl)
{
return false;
}
}
return false;
}
Das funktioniert doch dann.
|
|
|
02/09/2013, 15:22
|
#12
|
elite*gold: 1
Join Date: Oct 2009
Posts: 77
Received Thanks: 3
|
Code:
public boolean Zeile(int zeile, int zahl)
{
for (int i = 0; i < 9; i++)
{
if (feld[zeile][i] == zahl)
{
return true;
}
}
return false;
}
So ja, müsste gehen. Habs jetz auch soweit muss später mal gucken obs dann läuft aber ja  Trozdem vielen Dank!
|
|
|
All times are GMT +2. The time now is 01:57.
|
|