【问题标题】:Extra zero in final out put where does it come from?最终输出中的额外零它来自哪里?
【发布时间】:2016-01-02 08:17:07
【问题描述】:

我编写这段代码是为了将任何一组数字从大到小排序,但无论出于何种原因,输出的末尾总是为零。我的问题是,它是从哪里来的? (编码新手)

Console.WriteLine("Please enter set of numbers");
int input = Convert.ToInt16(Console.ReadLine());

int counter= 1;
int temp1;
int temp2;
int[] array = new int[input+1];

for (int i = 0; i <=input-1; i++)
{
    Console.WriteLine("Please enter entry number " + counter);
    int number = Convert.ToInt16(Console.ReadLine());
    array[i] = number;
        counter++;
}
for (int x = 0; x <= input; x++)
{
    for (int i = 1; i <=input; i++)
    {
        if (array[i - 1] <= array[i])
        {
            temp1 = array[i - 1];
            temp2 = array[i];
            array[i - 1] = temp2;
            array[i] = temp1;
        }
    }
}
Console.WriteLine();
for (int i = 0; i<=input; i++)
{
    Console.Write(array[i] + " ");
}
Console.ReadLine();

【问题讨论】:

  • 请花更多时间来格式化您的代码 - 这与 xcode 有什么关系?

标签: c# loops logic


【解决方案1】:

您在尝试处理 input + 1 还是 input 元素之间不一致。例如:

int[] array = new int[input+1];

for (int i = 0; i <=input-1; i++)
{
    Console.WriteLine("Please enter entry number " + counter);
    int number = Convert.ToInt16(Console.ReadLine());
    array[i] = number;
    counter++;
}

您正在创建一个包含 input + 1 元素的数组,但只填充其中的 input

一般来说, 更常见的是对循环使用独占上边界。例如:

int[] array = new int[input];

for (int i = 0; i < input; i++)
{
    // No need for the counter variable at all
    Console.WriteLine("Please enter entry number " + (i + 1));
    int number = Convert.ToInt16(Console.ReadLine());
    array[i] = number;
}

【讨论】:

  • 我不确定你的意思,通过填充。"[input+1]" 是为了防止程序由于超出范围错误而崩溃,输入 -1 是一种保持循环从用户的意图开始。 @乔恩斯基特
  • @JimRoberts:“填充”我的意思是你只要求input 值...“”[input+1]”是为了防止程序因为输出而崩溃范围错误”这不是修复错误的正确方法。您应该弄清楚为什么会出现超出范围的错误。请注意,在代码的底部,您将打印出所有 input + 1 值,因此其中一个必然为 0。
  • 我试图 int[] array = new int[input] 但它在运行 if 语句时崩溃,因为 array = new int[input] 从 0 开始。我没有看到任何其他绕过它。它在数组的任何给定间隔打印出整数的代码的底部。输入+1 个值@Jon Skeets
  • “我没有看到任何其他的方法。”那么你需要仔细观察。问题不是因为数组从 0 开始 - 问题是在 top 结束,因为您使用的是包容性上限(例如for (int i = 1; i &lt;=input; i++))。您应该在调试器中逐行执行此操作,准确了解每个点发生的情况。从逻辑上讲,您只需要 input 元素,对吗? (这就是你提示用户输入的数量。)所以你应该能够让它与这么多元素一起工作。
  • @Jim:这表明你没有理解我的回答。你的数组比它应该的大。
猜你喜欢
  • 2012-07-13
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多