Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:程序流程:我能';尽管知道答案显然很容易,但我还是找不到答案_C# - Fatal编程技术网

C#:程序流程:我能';尽管知道答案显然很容易,但我还是找不到答案

C#:程序流程:我能';尽管知道答案显然很容易,但我还是找不到答案,c#,C#,我倾向于自己解决大部分问题,但就我的一生而言,我无法找到一种专业的方法来解决这个问题,尽管我在寻找 这是我的基本程序: namespace ConsoleApplication1 { class MonsterAttackRolls { public int GoblinAttack() { int AttackNumber = 0; Random rnd = new Random(); AttackNumber

我倾向于自己解决大部分问题,但就我的一生而言,我无法找到一种专业的方法来解决这个问题,尽管我在寻找

这是我的基本程序:

namespace ConsoleApplication1
{ 
class MonsterAttackRolls
     {
    public int GoblinAttack()
    {
        int AttackNumber = 0;
            Random rnd = new Random();
       AttackNumber = rnd.Next(1, 21);
        return(AttackNumber);            
    }

    public int OrcAttack()
    {
        int AttackNumber = 0;
        Random rnd = new Random();
        AttackNumber = rnd.Next(11, 31);
        return (AttackNumber);
    }

    public int OgreAttack()
    {
        int AttackNumber = 0;
        Random rnd = new Random();
        AttackNumber = rnd.Next(21, 41);
        return (AttackNumber);
    }

}

class ApplicationObject
{
    static void Main()
    {
      MonsterAttackRolls Goblin1 = new MonsterAttackRolls();
      MonsterAttackRolls Orc1 = new MonsterAttackRolls();
      MonsterAttackRolls Ogre1 = new MonsterAttackRolls();

        Console.WriteLine("These are the attack numbers for the Goblin and the Orc! {0} {1}", Goblin1.GoblinAttack(), Orc1.OrcAttack());
        Console.ReadLine();

        Console.WriteLine("This is the Ogre's attack number! {0}", Ogre1.OgreAttack());
        Console.ReadLine();
    }
}
}

现在我想回到Main()程序,直接进入食人魔的攻击。我该怎么做?带着一个goto?哈哈,我没有任何线索。

您需要设置一个具有正确条件的循环,否则您的程序将从头到尾运行一次,然后退出。 如果你想让你的食人魔攻击一定次数,将其放入for循环中,例如:

for(int i = 0; i < 5; i++)
{

  attack code here;

}
for(int i=0;i<5;i++)
{
攻击代码在这里;
}
我建议添加一些用户输入来指示程序流程?还可以考虑将怪物放入自己的类中,例如,拥有一个主Moster类,该类包含montser所需的所有共享属性,然后将每个怪物设置为派生类


然后你可以设置你的攻击方法来接受怪物的类型。应该可以防止您为每个怪物编写攻击方法。

您的程序在打印输出后结束,因为您的
Main
mnethod已经结束,而该方法实际上就是您的程序。为了让它重复您已经完成的过程,您需要一个循环

在C#中有几种循环方式。您可以使用
for
循环进行固定次数的循环,也可以使用
while
do
循环在条件为真时进行循环。例如,如果您想将流程重复十次,可以在主循环中使用:

for (int i = 0; i < 10, i++)
{
    // put your original code here
}
for(int i=0;i<10,i++)
{
//把你的原始代码放在这里
}

我认为答案是在每次读取后按enter键,因为它正在等待您的输入


哦,我认为这是第一个非常酷的程序,比“Hello World”酷多了。。。你们这些强大的食人魔,向篱笆挥舞吧;-)

“返回到我的Main()程序”是什么意思?你的意思是想再次在
Main
中查看代码吗?是的,很抱歉不清楚。调用函数后如何返回主程序?如中所示,程序列出了我对兽人和地精的随机数,但程序结束了。你的问题是因为你在读这行吗?它将不会返回到Main(),直到您在ReadLine命令上按enter键。是否要递归调用Main方法?在每个类中创建Random:
Random rnd=new Random()这是不正确的。您应该初始化Random一次并重用它。否则,Random总是由当前时间派生值和rnd初始化。下一步将生成不那么随机的值。只需将几个
Goblin1.GoblinAttack()
连续输出即可。