2017-03-17 1 views
-3

ich einige Ausführungs Probleme haben, wo die gleiche Funktion in der gleichen Art und Weise ist nichtConsole.read(); keinen Wert lässt mich Eingang und setzt die Variable Wert auf 13

while(mano.Count != 0) // inizio partita 
      { 
       int count = 0; 
       scelta = Convert.ToInt32(Console.Read()) -48; 
       string res = cl.Colleziona(mano[scelta - 1], ID);      
       while (res == "Non e' il tuo turno" || res.StartsWith("Il tuo avversario ha giocato: ")) 
       { 
        if (res.StartsWith("Il tuo avversario ha giocato: ")) 
        { 
         Console.WriteLine(res + ", seleziona di nuovo una carta: ");       
         scelta = Convert.ToInt32(Console.Read()); //here gives the error 
         res = cl.Colleziona(mano[scelta-1], ID); 
         Console.WriteLine(res); 
         break; 
        } 
        else if (count == 0) 
        { 
         Console.WriteLine(res); 
         count++; 
        }       
        System.Threading.Thread.Sleep(200); 
        res = cl.Colleziona(mano[scelta - 1], ID); 
       }      
       mano.Remove(mano[scelta-1]); 
       ris = cl.partita(); 
       while (ris == null) 
       {      
        System.Threading.Thread.Sleep(200); 
        ris = cl.partita();    
       } 

Die kommentierte Funktion gibt 13 anstatt dass mich Eingang etwas arbeiten, Geben OutOfRangeException auf die sukzessive Funktion, jede Lösung?

Dank

+0

können Sie es als Antwort hinzufügen? also kann ich das als beantwortet markieren –

Antwort

0

Es sieht aus wie Sie Console.ReadLine nennen wollte. Dies gibt die gesamte Zeile als String zurück, während Console.Read einen int zurückgibt, der jeweils ein Zeichen darstellt.

In diesem Fall stellt 13 den Wagenrücklauf dar - Sie werden wahrscheinlich nach der Eingabe Ihres ersten Eingabebites die Eingabetaste drücken.

This question umfasst den Unterschied zwischen den verschiedenen Console.ReadX Methoden im Detail.