1

我有一个简单的程序,用于在给定输入大小和用户输入元素的情况下将输入传递给数组,如下所示: 完整代码

除此代码段外,所有代码都可以正常工作:

for(int i=0; i<size; i++) {
            flagger = false;
                while(flagger == false) {
                System.Console.WriteLine("Please enter number " + i + " : ");
                nextInput = System.Console.ReadLine();
                flagger = errorCheck(nextInput);
            }

            int varPass = System.Convert.ToInt32(nextInput);
            System.Console.WriteLine(flagger);
            arr[i] = varPass;
        }

无论我输入什么大小,循环都会提前退出并对包含一些空元素的数组进行排序,任何人都可以看到问题吗?

4

2 回答 2

4

在 errorCheck 中,您正在设置 size 的值,因为您将它传递到 out 参数中。

因此,下次用户输入小于 i 的数字时,循环会提前退出。创建一个虚拟 int 或以不同方式处理错误检查。例子:

static bool errorCheck(string input) {  
    int temp=0;
    if (int.TryParse(input, out temp))  
        return true;
    return false;
}

发生此“错误”是因为大小是静态的。

您可以通过仅返回 TryParse 的结果来进一步简化代码。

static bool checkErr(string input) {
    int temp=0;
    return int.TryParse(input, out temp);
}
于 2013-06-28T08:34:43.653 回答
1

您没有包含对我来说至关重要的 errorCheck 方法。如果 errorCheck 返回 true,则循环提前结束。编辑:糟糕,您确实包含了完整代码的链接。

正如我的前任所说,errorCheck(...) 修改了“大小”。也许这就是为什么我仍然在成员变量前加上下划线。很容易错过。

于 2013-06-28T08:35:05.283 回答