Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 01:57

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Java: missing return statement

Discussion on Java: missing return statement within the General Coding forum part of the Coders Den category.

Reply
 
Old   #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
Skipp3r is offline  
Old 02/08/2013, 20:10   #2
 
Devil0s's Avatar
 
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!!!
Devil0s is offline  
Old 02/08/2013, 20:19   #3
 
xNopex's Avatar
 
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.
xNopex is offline  
Old 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.
Skipp3r is offline  
Old 02/08/2013, 20:28   #5
 
xNopex's Avatar
 
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.
xNopex is offline  
Old 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)
        {
            
        }
        
    }
Skipp3r is offline  
Old 02/08/2013, 20:37   #7
 
xNopex's Avatar
 
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.
xNopex is offline  
Old 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
Skipp3r is offline  
Old 02/08/2013, 21:15   #9
 
Devil0s's Avatar
 
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.
Devil0s is offline  
Old 02/08/2013, 21:36   #10
 
elite*gold: 1
Join Date: Oct 2009
Posts: 77
Received Thanks: 3
Quote:
Originally Posted by Devil0s View Post
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
Skipp3r is offline  
Old 02/08/2013, 22:39   #11
 
Devil0s's Avatar
 
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.
Devil0s is offline  
Old 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!
Skipp3r is offline  
Reply


Similar Threads Similar Threads
[JAVA Error] Could not create the java virtual machine
07/21/2013 - Technical Support - 10 Replies
Schönen Abend! Leider hat es sich aus einem unerfindlichen Grund ergeben, dass sobald ich die Minecraft.exe starten will die Errormeldung kommt. Die Tips auf Minecraft.net habe ich schon ohne Erfolg befolgt. Hoffe ihr könnt mir weiterhelfen... Mein PC:
Missing MAP Missing skill 2M DK TzPhQy BOT v2.x & 1.8 (Exp)
01/19/2010 - Dekaron - 8 Replies
Missing MAP Missing skill 2M DK TzPhQy BOT v2.x & 1.8 (Exp) :rtfm:
Missing dbmon.exe file missing
11/05/2009 - Dekaron Private Server - 2 Replies
Can somone give me a download link or somthing just for dbmon.exe please and thank you



All times are GMT +2. The time now is 01:57.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.