我的C#while循环有什么问题?

时间:2010-10-09 20:13:45

标签: c# winforms

我的while循环(在我的Form类中)有问题,但基本上,它会测试看看“race”的获胜者是谁在我的应用程序中,它还启动了应用程序(Shark.Swim)。一旦找到胜利者是谁,就需要在我的投注类中获得“支付”方法。

所以这就是我所拥有的。

INSTANCE VARIABLES

private Shark[] sharks;
    private Guy[] guys;
    private Guy selectedGuy;
    private Bet[,] bets;
    private int[] winners = new int[4];
       public Bet betClass;
       public int selectedGuyIndex;

WHILE LOOP:

private void raceBtn_Click(object sender, EventArgs e)
{
    public int[] finishingOrder = new int[4];
    bool sharkFinished = false;
    public int place = 1;
    public int numSharksFinished;

while (numSharksFinished < 4)
    {
        sharkFinished = false;
        for (int i = 0; i < 4; i++)
        {
            if (finishingOrder[i] == -1)
            {
                if (sharks[fish].Swim();)
                {
                    finishedOrder[i] = place;
                    sharkFinished = true;
                    numSharksFinished++;
                }
            }
            if(sharkFinished = true) 
            {
               place++;
            }
        }
    }

支付方式:

public double payout(int pool, int sharkPool)
{
    for (int j = 0; j < 3; j++)
    {
        Guy[j].cash += Bets[i, j].Amount;
    }

}

我认为我最好的选择是将“payout”方法移动到主窗体类,因为我的Bet类中没有“Bets”数组的实例。如果您有任何疑问,请提前离开,并提前致谢!

4 个答案:

答案 0 :(得分:5)

我可以看到很多错误。这里不应该有分号:

if (sharks[fish].Swim();)
                       ^

您不能拥有公共局部变量。要么成为成员,要么删除public关键字:

private void raceBtn_Click(object sender, EventArgs e)
{
    public int[] finishingOrder = new int[4];
    ^^^^^^

此本地(?)变量在使用之前未初始化:

public int numSharksFinished; // should't be public and is uninitialized
while (numSharksFinished < 4)
{

我认为这应该更改为finishingOrder

finishedOrder[i] = place;
      ^^

如果您可以阅读编译器错误并了解如何理解它们而不是将所有错误发布到StackOverflow,那将是一个好主意。如果您能够理解编译器试图告诉您的内容,它将允许您更快地开发程序。

我还建议编写非常小的程序,特别是当你刚刚学习时。在添加更多行之前,一次只添加几行并测试这些行以确保它们正常工作(或至少确保它们编译)。这将帮助您了解导致编译错误的代码(通常是您刚刚添加/更改的代码)。

答案 1 :(得分:2)

另外

 if(sharkFinished = true) 

应该是:

 if(sharkFinished == true)

或只是

 if(sharkFinished) 

答案 2 :(得分:0)

如何去除;在if (sharks[fish].Swim();)

答案 3 :(得分:0)

        if(sharkFinished = true) 
        {
           place++;
        }

        if(sharkFinished == true) 
        {                 ^
           place++;
        }

这是分配值

的比较