2016-05-05 22 views
-2

Ich habe ein mehrdimensionales Array in einer Textdatei:Suche mehrdimensionales Array

a,1,2,3 
b,4,5,6 
c,7,8,9 
d,10,11,12 

I-Eingang für eine der Zahlen wollen, um das Array zu suchen, und für die Zeile die Anzahl der entsprechenden Buchstaben angezeigt werden erscheint in.

Jede Hilfe wäre sehr willkommen.

Edit:

Ich habe eine CSV-Datei oben angegebenen Informationen enthält.

Bisher habe ich:
1. ein Array Erstellt die lesen Sie alle Zeilen in der Datei zu speichern
2. ein zweites Array Erstellt die endgültige Anordnung zum Speichern von Werten
3. ein drittes Array Erstellt speichern Die Linie teilt sich auf und setzt die Werte zurück in das zweite Array.

Dies ist der Code:

string[] as_FirstArray = System.IO.File.ReadAllLines("PartNumbersFile.csv"); 
string[,] as_SecondArray = new string[4, as_FirstArray.Length]; 
string[] as_ThirdArray; 

string s_Input = Console.ReadLine(); 

for (int i_Count1 = 0; i_Count1 < as_FirstArray.Length; i_Count1++) 
{ 
    as_ThirdArray = as_FirstArray[i_Count1].Split(','); 

    as_SecondArray[0, i_Count1] = as_ThirdArray[0]; 
    as_SecondArray[1, i_Count1] = as_ThirdArray[1]; 
    as_SecondArray[2, i_Count1] = as_ThirdArray[2]; 
    as_SecondArray[3, i_Count1] = as_ThirdArray[3]; 
} 

Und ich bin jetzt total fest. Mir wurde gesagt, dass ich von hier aus muss:
1. Verwenden Sie eine for-Schleife auf As_SecondArray-Index [1] von der ersten Zeile bis zur letzten Zeile.
2. Verwenden Sie eine if-Anweisung, um zu bestimmen, ob userinput in index [1] gefunden wird, und wenn ja, speichern Sie die Schleifenanzahl. (Hier, wenn keine Übereinstimmung gefunden wird, werde ich für den Index [2] wiederholen und erneut, wenn keine Übereinstimmung gefunden wird, für den Index [3] wiederholen.) 3. Verwenden Sie eine andere for-Schleife und if-Anweisung für den Index [0] to Ordne die Zählnummer der gefundenen Übereinstimmung zu und zeige den entsprechenden Eintrag an. (Ich kann diesen Schritt tun, aber das ist hoffnungslos, ohne zu wissen, wie man Schritte 1 und 2 macht.)

Ich nicht, wie man einen bestimmten Index als das Schleifenziel spezifiziert. Oder wo ich die Schleife in Relation zu der Schleife stelle, die ich bereits habe - drinnen oder nicht.

Edit:

DANKE wem auch immer meine Post EDITED und ich habe meine Antwort nun gelöscht :-)

nach viel mehr Zeit ich ein wenig Fortschritte gemacht haben. Ich habe herausgefunden, wie die einen bestimmten Index in einer Schleife und festzustellen, ob in diesem Index userinput gefunden:

 for (int i_Count2 = 0; i_Count2 < as_SecondArray.GetLength(1); i_Count2++) 
     { 
      for (int i_Count3 = 0; i_Count3 < as_SecondArray.GetLength(0); i_Count3++) 
      { 
       if (as_SecondArray[1, i_Count3].Equals(s_Input)) 
       { 
        s_Found = as_SecondArray[1, i_Count3]; 
       } 
       else { lblOutput.Text = "not found"; } 
      } 
     } 

Aber ich bin fest, wie die i_Count3 Schleife Nummer abzurufen.

+2

Klingt wie eine Hausaufgabe – ntohl

+0

Und ich fühle mich jetzt ziemlich gut! Ich habe endlich Arbeitscode! Ich würde den Code gern posten, wenn er anderen helfen könnte, aber ich möchte nicht (wieder) am falschen Ort posten. Soll ich a) es in einem Kommentar posten b) meinen ursprünglichen Beitrag bearbeiten oder anhängen c) eine Antwort hinzufügen? Oder d) kümmere dich überhaupt nicht :-D – kiwichick

Antwort

0

Erstellen Sie kein mehrdimensionales Array, erstellen Sie stattdessen ein Dictionary oder eine Hashtable, wobei Schlüssel die Nummer und Wert der Buchstabe ist. Jetzt können Sie einfach die Nummer suchen und den zugehörigen Buchstaben mit der Suchzeit von O (1) finden.

+0

Danke, aber ich muss ein mehrdimensionales Array verwenden. – kiwichick