我正在做一个多次骰子的程序。我做了一个名为'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();
}
}
}
}
答案 0 :(得分:4)
在for循环中,计数器应该从0开始,而不是从1开始。在你的情况下nor
和nod
等于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。