循环未完成

时间:2013-06-28 08:28:58

标签: c#

我有一个简单的程序,用于将输入传递给数组,给定输入的大小和用户输入的元素,如下所示: Full code

除了此代码段之外,所有代码都可以正常运行:

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;
        }

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

2 个答案:

答案 0 :(得分:4)

在errorCheck中,当你在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);
}

答案 1 :(得分:1)

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

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