tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
221
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cartilage cartilage ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    5
    Hallo,

    ich habe ein 2D Array erstellt welches komplett mit Nullen gefüllt ist, bis auf einige Stellen, welche 1en beinhalten. Nun möchte ich von hinten dieses 2D Array nach eben dieser Zahl durchsuchen und als Rückgabewert den Spaltenindex erhalten in dem die 1 das erste mal auftaucht.

    Mein Code lautet wie folgt:

    for(int k=19; k>0; k--){
    for(int l=2; l>0; l--){
    if(tabelle[l][k] == 1){
    vorhanden = k;
    break;
    }

    }
    }

    Wie ihr euch denken könnt, wende ich mich hier ans Forum, weil das nciht funktioniert

    Habt ihr Ideen woran das liegt?

    Beste Grüße
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Hi und willkommen hier im Forum

    Den Code bitte in die Code- oder Java-Tags (siehe meine Signatur), das erhöht die Lesbarkeit.

    Schreib das ganze doch in eine Methode, z.B. so:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
        private static int getColumnWithContent(int[][] tabelle) {
            for (int k = tabelle.length - 1; k >= 0; k--) {
                for (int l = tabelle[k].length - 1; l >= 0; l--) {
                    if (tabelle[l][k] == 1) {
                        return k;
                    }
                }
            }
            return -1;
        }

    Das Problem war vermutlich, weil du in deinen for-Schleifen nur bis 1 (k und l > 0) herunter gezählt hast, so wird jeweils die erste Zeile und die erste Spalte ignoriert.
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    SE Tutorials.de Gastzugang
    Der Fehler wird darin gelegen haben das er aus der inneren for() zwar BREAK; aufgerufen hat, diese aber die äußere for() nicht mitbekommt da BREAK; soweit ich weis nur die aktuelle Ebene abbricht, nicht aber eventuelle übergeordnete.
     

  4. #4
    cartilage cartilage ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    5
    Danke für die schnelle Antwort. Das mit den Code Tags werde ich beachten.

    Irgendwie funktioniert die Sache immer noch nicht, wobei es dann wohl woanders liegen muss. Könnte es ein Problem sein, dass ich diese Suche wiederum im Rahmen einer for Schleife ausführe?
    So langsam gehen mir die Ideen aus...
     

  5. #5
    cartilage cartilage ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    5
    Danke für diesen Hinweis Spike, ich habe einfach eine zweite If Bedingung eingebaut, welche dann wiederum einen break durchführt. Nun geht es. Sicher nicht die schönste Variante, aber das passt erstmal.
     

  6. #6
    SE Tutorials.de Gastzugang
    Was ich noch anmerken möchte ist das hier ein großer Fehler vorliegt

    Deinem Code nach läuft die äußere for() mit dem int k.
    Die innere aber mit dem int l.
    Allerdings rufst du das aktuelle Element mit [l][k] ab ... also genau falschherum.

    Diesen Fehler hat genodeftest leider kopiert.
    Natürlich kann es nicht funktionieren wenn du die Länge der ersten Dimension für das Objekt der 2ten Dimension verwendest und umgekehrt.

    @genode
    Das müsste du doch eigentlich gemerkt haben wenn du die innere for() mit array[k] initialisiest und dann auf array[l][k] zugreifst ...
    Typischer TYPO =D
     

  7. #7
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    @SPiKEe: stimmt, hab ich übersehen und mitkopiert...
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

Ähnliche Themen

  1. [JS] Array spaltenweise durchsuchen und Selectbox füllen?
    Von _opiWahn_ im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 28.02.11, 12:09
  2. Array spaltenweise durchsuchen
    Von ania im Forum C/C++
    Antworten: 17
    Letzter Beitrag: 15.07.10, 08:57
  3. Antworten: 0
    Letzter Beitrag: 17.05.09, 11:05
  4. explode von hinten auslesen
    Von Aser im Forum PHP
    Antworten: 4
    Letzter Beitrag: 31.08.06, 17:09
  5. Antworten: 3
    Letzter Beitrag: 01.08.06, 10:45

Stichworte