2016-04-02 15 views
0

Vielen Dank für Ihr Feedback. Ich bekomme immer noch eine Ausnahme außerhalb des Bereichs. Ich debugge, kann aber nicht verstehen, warum ich die Ausnahme bekomme. Wenn ein int höher als ein bestimmter anderer int ist, sollte es funktionieren. Hat es etwas mit der Länge zu tun?C# Listenanzahl mit Datenvalidierung

AKTUALISIERT-Code

    do 
       { 
        Console.Write("Input the element that you want to exclude from the list: "); 
        result = int.TryParse(Console.ReadLine(), out delSelection); 

        tempInputDelInt = (int)(tempList[delSelection]); 
        tempInputDelStr = Convert.ToString(tempInputDelInt); 

        if (result == true && tempInputDelInt >= 0 && tempInputDelInt < tempList.Count) 
        { 
         tempList.RemoveAt(delSelection); 
         Console.WriteLine("\nYou've deleted the temperature " + tempInputDelStr + " from index " + delSelection); 
         success = false; 
         Console.ReadKey(true); 
         Console.Clear(); 
        } 

        else if (result == true && tempInputDelInt >= tempList.Count || tempInputDelInt < 0) 
        { 
         Console.WriteLine("You've input a number that's outside the list. Input a digit between 0 and " + (tempList.Count - 1) + ".\n"); 
         success = true; 
         Console.ReadKey(true); 
        } 

        else if (result == false) 
        { 
         Console.WriteLine("\nYou didn't input a digit, try again!\n"); 
         success = true; 
         Console.ReadKey(true); 
        } 
       } while (success); 
       success = false; 

ich mit der Validierung der ersten else if-Anweisung einige Probleme habe. Ich möchte die Fälle abfangen, wenn ein Wert außerhalb des Arrays eingegeben wird, aber das schaffe ich nicht.

Ich habe ein praktisch identisches Programm mit array.Length mit Erfolg gemacht.

Gibt es einen Unterschied zwischen array.List und list.Count? Ist das das Problem?

Vielen Dank im Voraus für Ihre Hilfe!

    do 
       { 
        Console.Write("Input the element that you want to exclude from the list: "); 
        result = int.TryParse(Console.ReadLine(), out delSelection); 


        tempInputDel = Convert.ToString(tempList[delSelection]); 

        if (result == true && delSelection >= 0 && delSelection < tempList.Count) 
        { 
         tempList.RemoveAt(delSelection); 
         Console.WriteLine("\nYou've deleted the temperature " + tempInputDel + " from index " + delSelection); 
         Console.ReadKey(true); 
         Console.Clear(); 
        } 

        else if (result == true && delSelection >= tempList.Count || delSelection < 0) 
        { 
         Console.WriteLine("You've input a number that's outside the list. Input a digit between 0 and " + (tempList.Count - 1) + ".\n"); 

        } 

        else if (result == false) 
        { 
         Console.WriteLine("\nYou didn't input a digit, try again!"); 
         Console.ReadKey(true); 
        } 
       } while (result == false); 
+0

Was läuft falsch? –

Antwort

0

Ich gehe davon aus, dass Ihre Out-of-Range-Ausnahme hier geschieht:

tempInputDel = Convert.ToString(tempList[delSelection]);

Sie können dies nicht tun, bevor die Überprüfung, ob delSelection innerhalb Bereich von tempList ist. Verschieben Sie es zuerst in den Block if.

Allgemeine Hinweise:

Sie können einen Debugger von Anweisung zu Anweisung gehen Schritt-für-Schritt die genaue Quelle Codeposition zu finden, wo (z) eine Ausnahme ausgelöst wird.

1

Ändern Sie diese

tempInputDelInt = (int)(tempList[delSelection]); 

dieser

tempInputDelInt = (int)delSelection; 

Was auch immer Anzahl der Benutzer gibt, die Sie verwenden, dass als der Index, welches Element zu bestimmen, zu löschen. Es ist also kein Wert, den Sie von tempList erhalten.

+0

Danke Mann! Problem gelöst :) – Max

+0

@MaxModestoWallin Du solltest ihm danken, indem du seine Antwort akzeptierst. – RhinoDevel

Verwandte Themen