For Loop不会执行C#

时间:2016-07-16 17:55:06

标签: c# for-loop

我正在做一个多次骰子的程序。我做了一个名为'RollDice'的方法。该方法一直有效,直到for循环。在控制台中输入'roll'之后它返回到main方法,我不知道为什么它不会在for循环中执行脚本。我有标记代码停止工作的地方。任何帮助将不胜感激,谢谢!

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();
            }
        }
    }
}

3 个答案:

答案 0 :(得分:4)

在for循环中,计数器应该从0开始,而不是从1开始。在你的情况下nornod等于1.这就是循环从不执行的原因。

答案 1 :(得分:0)

我唯一能看到的是,当程序到达for循环时,如果nod或nor为1,则结束循环的条件已经满足。在ebd条件中使用'&lt; ='代替。

答案 2 :(得分:0)

在线

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

nod是1,并且n <1。点头检查是循环终止。 设置i = 0或设置检查n&lt; = nod。