2013-05-02 44 views
1

我做了一個骰子游戲,就在剛纔在這裏問了一個解決方案,我得到了。它提出了一個新問題,我似乎無法找到答案。ReadLine();值之間

繼承人的代碼。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Noppapeli 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int pyöräytys; 
      int satunnainen; 
      int luku = 0; 

      Random noppa = new Random((int)DateTime.Now.Ticks); 

      Console.WriteLine("Anna arvaus"); 
      int.TryParse(Console.ReadLine(),out pyöräytys); 

      Console.WriteLine("Haettava numero on: " + pyöräytys); 
      Console.ReadLine(); 
      do 
      { 
       luku++; 
       satunnainen = noppa.Next(1, 7); 
       Console.WriteLine("numero on: " + satunnainen); 
       if (satunnainen == pyöräytys) 
       { 
        satunnainen = pyöräytys; 
       } 
      } while (pyöräytys != satunnainen); 

      Console.WriteLine("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); 
      Console.WriteLine("Haettu numero: " + pyöräytys); 
      Console.WriteLine("Pyöräytetty numero: " + satunnainen); 
      Console.Write("Kesti " + luku + " Nopan pyöräytystä saada tulos!"); 
      Console.ReadLine(); 
     } 
    } 
} 

問題是int.TryParse(Console.ReadLine(),out pyöräytys);只需要取1-6之間的值。現在如果我在那裏放置一個7,那麼這個遊戲就會在一個循環中找到D6中的一個7。 有沒有一個簡單的解決方案,或者我應該只是使骰子更大。

+2

'變種knäckebröd= 0; while(knäckebröd<1 ||knäckebröd> 6){int.TryParse(Console.ReadLine(),outknäckebröd); } - 不接受「無效」輸入,並讓用戶再次輸入,直到輸入處於有效範圍內。 – Corak 2013-05-02 13:15:28

+0

爲什麼不直接檢查Console.ReadLine()中的解析int是否在1-6之間?如果它沒有顯示錯誤信息,並要求一個新的值。 – 2013-05-02 13:17:00

+0

knäckerbrödAKAnäkkäri像一個魅力工作。 – Fruktoosi 2013-05-02 13:23:43

回答

1

您只需添加某種循環以確保該值有效並繼續循環直到提供有效值。

pyöräytys = -1; // Set to invalid to trigger loop 

while (pyöräytys < 1 || pyöräytys > 6) 
{ 
    Console.WriteLine("Anna arvaus"); 
    int.TryParse(Console.ReadLine(),out pyöräytys); 

    if (pyöräytys < 1 || pyöräytys > 6) 
    { 
     Console.WriteLine("Invalid value, must be 1-6"); // Error message 
    } 
} 
0

只需驗證輸入值在1和6之間:

bool valid; 
while (!valid) 
{ 
    Console.WriteLine("Anna arvaus"); 
    int.TryParse(Console.ReadLine(),out pyöräytys); 
    valid = (pyöräytys > 0 && pyöräytys <= 6); 
} 
+0

'pyöräytys'必須是1到6.在你的例子中,'0'是可以接受的。也許更改檢查到'pyöräytys> 0'? – Kami 2013-05-02 13:19:30

+0

因爲隨機值介於1和6之間應該> = 1。輸入0會導致相同的問題 – Zadam 2013-05-02 13:20:13

+0

當然,你們都是對的。修復。 – Rik 2013-05-02 13:23:43