for 循环不会执行 C#

本文关键字:执行 循环 for | 更新日期: 2023-09-27 17:57:19

我正在制作一个程序,该程序将多次骰子。我制作了一种名为"掷骰子"的方法。该方法一直有效,直到 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();
            }
        }
    }
}

for 循环不会执行 C#

在 for 循环中,计数器应该从 0 开始,而不是从 1 开始。在您的情况下,nornod 等于 1。这就是为什么循环永远不会被执行的原因。

我唯一能看到的是,当程序到达for循环时,如果nod或nor是1,则已经满足结束循环的条件。在 ebd 条件下改用 '<='。

在线

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

点头为 1,n 个点头检查<为循环终止。设置><= 点头。