2016-07-16 22 views
0

私はいくつかのサイコロのプログラムを作ります。私は 'RollDice'というメソッドを作った。メソッドはforループまで動作します。私はコンソールに 'ロール'と入力した後にmainメソッドに戻り、なぜforループでスクリプトを実行しないのかわかりません。コードが動作しなくなった場所をマークしました。どんな助けでも大変感謝しています。ありがとう! forループカウンタが0からではなく、あなたのケースnornodで1から開始する必要がでforループは実行されませんC#

using System; 
using System.Collections.Generic; 

namespace Dice Roller 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      int nos = 6; 
      int nod = 1; 
      int nor = 1; 
      string OP; 
      int x = 1; 
      while (x == 1) 
      { 
       Console.WriteLine("Random Dice Macine"); 
       Console.WriteLine("Type 'edit' To Edit Dice Settings"); 
       Console.WriteLine("Type 'clear' To Clear The Screan"); 
       Console.WriteLine("Type 'exit' To Close The Aplication"); 
       Console.WriteLine("Type 'roll' to Roll The Dice"); 
       Console.Write("-> "); 
       OP = Console.ReadLine(); 
       if (OP == "exit") 
       { 
        Environment.Exit(0); 
       } 
       else if (OP == "edit") 
       { 
        Console.Clear(); 
        Console.WriteLine("Number Of Sides On The Dice"); 
        Console.Write("->"); 
        nos = Convert.ToInt32(Console.ReadLine()); 
        Console.WriteLine("Number Of Dice"); 
        Console.Write("->"); 
        nod = Convert.ToInt32(Console.ReadLine()); 
        Console.WriteLine("Number Of Roles"); 
        Console.Write("->"); 
        nor = Convert.ToInt32(Console.ReadLine()); 
        Console.WriteLine("Setup Compleat! Press Space To Continue."); 
        Console.ReadKey(); 
        Console.Clear(); 
       } 
       else if (OP == "clear") 
       { 
        Console.Clear(); 
       } 
       else if (OP == "roll") 
       { 
        RollDice(nor, nos, nod); 
       } 
      } 
     } 
     public static void RollDice(int nor, int nos, int nod) 
     {            //Code Works Here 
      Random gen = new Random(); 
      List<int> numbers = new List<int>(); 
      for (int n = 1; n < nod; n++) 
      { 
       for (int i = 1; i < nor; i++) 
       {          //But Not Here 
        numbers.Add(gen.Next(1, nos)); 

       } 
       foreach (int element in numbers) 
       { 
        Console.Write(element + ", "); 
       } 
       numbers.Clear(); 
      } 
     } 
    } 
} 
+0

デバッグで実行し、 'nod'の値を確認してください。それは '1'として渡されるように見えます。 – Tdorno

+0

@Cabe 'norも1です。あなたはこれをやっています:" 1は1未満です、このコードを実行してください " – Tibrogargan

答えて

4

ループが実行されることはありません理由である1に等しいです。

+0

ありがとうございました! – Cabe

0

私が見ることができるのは、プログラムがforループに達したときにnodまたはnorが1の場合、ループを終了する条件が既に満たされていることです。代わりに、ebd条件で '< ='を使用してください。ライン上

0

for (int n = 1; n < nod; n++) 

うなずきは1であり、n <うなずきチェックがループの終了です。 i = 0に設定するか、チェックnを設定する< = nod。

関連する問題