【问题标题】:why are not all array values printed in c#? [closed]为什么不是所有的数组值都打印在 c# 中? [关闭]
【发布时间】:2022-01-06 14:14:45
【问题描述】:

为什么如果我将数组值存储在变量“temp1”和“temp2”中,控制台只打印值 2、2 和 4?

     static void Main(string[] args)
        {
            //Declaración de arreglos solicitados.
            double[] array6 = { 3, 2, 1, 2, 3, 4, 3 }; // true

            //Imprimimos resultado de funcion "mismaDiferencia".
            func1(array6);
        }


        static void func1(double[] arr)
        {
            double temp1 = 0;
            double temp2 = 0;

            for (int i = 0; i < arr.Length - 1; i++)
            {
                temp1 = arr[i];
                temp2 = arr[i++];

                Console.WriteLine($"Contienes: {arr[i]}");
            }
        }

【问题讨论】:

  • 您的问题出在这一行 temp2 = arr[i++]; 您正在第二次增加 i 变量。第一次是在循环增量中。可能你想要 temp2 = arr[i + 1] 虽然你从不使用 temps 变量

标签: c# c#-4.0


【解决方案1】:

{} 是设置符号。集合不包含重复项。请改用 [] 括号。

【讨论】:

  • 花括号是 C# 中数组初始化的正确语法。
  • 这是不正确的。在 c# 中,您可以省略新的 [] 而只需执行 {}
【解决方案2】:

由于 temp2 = arr[i++] 将计数器 i 增加 1 而不打印它,因此您将始终只打印每隔一个。

顺便说一句

temp2= arr[i++] ;

仍然与 arr[i] 具有相同的值;

如果要将下一个值分配给 temp2,则必须使用

temp2 = arr[++i];

所以试试这个

    var i=0;
    for ( i =0; i < arr.Length-1; )
    {
        temp1 = arr[i];
        temp2 = arr[++i];
        
        Console.WriteLine($"Contienes: {arr[i-1]}");
    }
    Console.WriteLine($"Contienes: {arr[i]}");

【讨论】:

  • @Steve 到控制台时,i 已经是 i+1。所以没有 i=0 我必须从 1 开始。如果我将控制台移到顶部,我可以只使用 array[i]
【解决方案3】:

问题出在你的 for 循环中。你有i = 0 并且还声明i 应该小于arr.Length - 1。最后会留下一个值。

试试这个:

for(var i = 0; i < arr.Length; i++)

您还为每个循环增加 i 两次。一次在循环中,一次在 temp2 = arr[i++] 行中。为此,您必须删除最后一行,因为您将在最后一次迭代中获得 IndexOutOfRangeException:

temp2 = arr[i++];

如果由于某种原因您需要在每次迭代中写入这两个值,请删除它或将您的 for 循环条件调整为 i &lt; arr.Length - 1。

【讨论】:

  • 正是这个。他的代码将跳过所有其他迭代并排除最后一个值
  • 不,如果您删除 -1,程序将崩溃并出现 IndexOutOfRangeException
  • 为什么?如果 arr.Length 返回 10,则循环将在第 10 次迭代时停止,此时 i == 9。
  • @Steve 循环条件是 i
  • @LietDude 并在循环内尝试访问 arr[i+1],最后一个循环中的长度为 arr=10,i 为 9,i+1 为 10。您的建议删除 -1 将使程序崩溃。试试看吧。
猜你喜欢
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 2011-07-28
  • 2017-08-22
  • 1970-01-01
  • 2022-09-28
相关资源
最近更新 更多