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

eig*_*ose 0 c# winforms

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

所以这就是我所拥有的.

实例变量

private Shark[] sharks;
    private Guy[] guys;
    private Guy selectedGuy;
    private Bet[,] bets;
    private int[] winners = new int[4];
       public Bet betClass;
       public int selectedGuyIndex;
Run Code Online (Sandbox Code Playgroud)

循环时:

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++;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

支付方式:

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

}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 5

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

if (sharks[fish].Swim();)
                       ^
Run Code Online (Sandbox Code Playgroud)

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

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

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

public int numSharksFinished; // should't be public and is uninitialized
while (numSharksFinished < 4)
{
Run Code Online (Sandbox Code Playgroud)

我认为这应该改为finishingOrder:

finishedOrder[i] = place;
      ^^
Run Code Online (Sandbox Code Playgroud)

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

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