2016-07-14 22 views
0

Ich bin ein bisschen ein Anfänger zum Programmieren. : PDen Index einer Zeichenkette mit spezifischen Anforderungen finden?

Ich arbeite gerade mit Verarbeitung, um eine Tabelle von Themen mit ihrer ID, Titel und Verfügbarkeit zu erstellen.

Ich habe ein 2D-Array, das Informationen wie diese enthält:

units[0][0] = "CAKE100"; //Subject ID 
units[1][0] = "Eating Cake And Baking Too"; //Subject Title 
units[2][0] = "November"; //Subject Availability 

units[0][1] = "TACO204"; //Subject ID 
units[1][1] = "Tacos And Other Delicious Things"; //Subject Title 
units[2][1] = "April"; //Subject Availability 

units[0][2] = "KITC102"; //Subject ID 
units[1][2] = "Kitchen Safety"; //Subject Title 
units[2][2] = "June"; //Subject Availability 

Ich versuche, durch das Gerät zu filtern [0] [x] -Abschnitt die Indexposition eines jeden Probanden-ID zu finden, die "hat 1 "in der vierten Position der Saite.

Zum Beispiel möchte ich [0] [0] und [0] [2] zurückgeben, weil "CAKE100" und "KITC102" beide "1" an der vierten Position haben.

Ich habe versucht, indexOf oder .substring zu verwenden, aber aus irgendeinem Grund kann ich es nicht herausfinden.

EDIT: nicht sicher, wie viel Hilfe es sein wird, aber hier ist mein abgeschlachtet Code:

void checkLevel100() { 
for (int j = 0; j < units.length; j++) { 
    position = 0; 
    // position = units[0][j].indexOf("1"); //This returns 4; 
    if (units[0][j].substring(4) == "1") { //This doesn't run at all, and so it returns 0. 
     position = j; 
    } 
    fill(0); 
    text(position, width/2, height/2); 
    } 
} 

ich auch tat, was Kevin Workman vorgeschlagen. Hier ist der Code für das:

for (int i = 0; i < units.length; i++) { 
    if(units[0][i] == "TACO204"){ //This results in 1, as expected 
     location[i] = i; 
    println(i); 
    } 

Noch einmal vielen Dank für Ihre Zeit :)

+0

Bitte senden Sie den Code, den Sie ausprobiert haben, so dass es leicht zu beheben ist. – VatsalSura

+0

Fügen Sie Ihren Code bitte –

+0

@VatsalSura Entschuldigung, gepostet jetzt. :) – MiekeUyt

Antwort

0

Sie müssen Ihr Problem brechen in kleinere Schritte.

Schritt 1: Schleife über Ihr 2D-Array. Sie könnten dafür eine verschachtelte for-Schleife verwenden.

Um zu testen, dass dieser Schritt funktioniert, können Sie nur jedes Element in Ihrem 2D-Array drucken, bevor Sie sich über irgendeine Logik Gedanken machen.

Schritt 2: Schreiben Sie eine if Anweisung, die überprüft, ob der Wert dieses Index Ihren Test besteht.

Um zu testen, ob dieser Schritt funktioniert, möchten Sie möglicherweise ein separates Programm erstellen, das nur einen fest codierten Wert testet, anstatt Arrays zu verwenden.

Schritt 3: Sobald die ersten beiden Schritte funktionieren, können Sie die Indizes, die Ihren Test bestehen, in einer Art Datenstruktur speichern. Sie könnten uns eine ArrayList<Integer> dafür.

Erstellen Sie ein separates Beispielprogramm, das nur eine Schleife über ein Array ausführt, ohne sich über eine Logik Gedanken machen zu müssen. Erstellen Sie ein anderes separates Programm, das nur eine if-Anweisung verwendet, um Ihre Bedingung mit einem fest codierten Wert zu testen. Wenn Sie dann bei einem bestimmten Schritt stecken bleiben, können Sie eine spezifischere Frage zusammen mit einer MCVE stellen. Viel Glück.

0

Ich denke, es wäre einfacher für Sie, die Werte Ihres Subjekts als Objekt einer class zu speichern. Vielleicht speichern Sie den numerischen Teil der ID auch als int? Mit einer Klasse können Sie mehr lesbaren Code schreiben.

public class FoodSubject { 
    String stringID; 
    int numID; 
    String title; 
    String availability; 

    public FoodSubject(String stringID, int numID, 
        String title, String availability) { 

     this.stringID = stringID; 
     this.numID = numID; 
     this.title = title; 
     this.availability = availability; 
    } 
} 

Um ein neues Array Ihrer FoodSubject Objekte verwenden diesen Code zu machen:

FoodSubject[] subjectArray = new FoodSubject[3]; 
subjectArray[0] = new FoodSubject("CAKE", 100, "Eating Cake And Baking Too", "November"); 

Zugriff auf die Werte wie diese subjectArray[0].numID

Blick in die toString zwingende() -Methode in der Klasse zu drucken einfach alle Werte deines Faches aus. Dies wird Ihnen helfen, Probleme im Rest Ihres Codes viel einfacher zu identifizieren!

Wenn Sie immer noch die gesamte ID als String speichern möchten, verwenden Sie die Funktion charAt(int index), um zu testen, ob das Zeichen eine '1' ist.

Dieser if (units[0][j].substring(4) == "1") {-Code ist falsch. Sehen Sie in der String-Java-Dokumentation nach, was die Teilzeichenfolge bewirkt.