C#

时间:2017-07-26 03:07:06

标签: c# arrays console

我提前道歉,但在这种情况下我对C#还是比较陌生的(我在Unity中使用它,但从不单独使用它。)

我试图创建一个字符串数组,并且在一个循环中,有另一个数组,比如说,评级系统(int元素)。 不幸的是,我的问题似乎在自己的水平上。

这是代码:

using System;

public class Test
{
  public static void Main()
  {
    string [] arr1 = new string[] {"a","b","c","d","e"};
    int a = 0;
    foreach (var element in arr1)
    {          
        int [] myRate = new int [5] {1,2,3,4,5};
        int [] rating = myRate;
        a = rating[0];
        Console.WriteLine (element +": " + (rating[a]));
    } a++;
  }
}

我的问题是输出应该是1(对于所有元素,因为我还在处理增量),但这是输出:

a: 2
b: 2
c: 2
d: 2
e: 2

我试图尽可能地减少代码以找出问题(这就是为什么它是简约的),但我仍然无法弄明白。当我将零更改为1时,输出为2,依此类推。如果我将它改为4则表示它超出范围。 非常感谢您的帮助,并提前感谢您。

3 个答案:

答案 0 :(得分:1)

在循环中,何时执行此操作:

a = rating[0];

然后a变为1,因为它是int数组中的第一项。然后你把它写到控制台:

rating[a]

...导致此结果(因为a为1):

rating[1]

...数组中的第二项是2,这就是你得到这个输出的原因。

两种输出方式1:

foreach (var element in arr1)
{          
    int [] myRate = new int [5] {1,2,3,4,5};
    int [] rating = myRate;
    a = 0;
    Console.WriteLine (element +": " + (rating[a]));
} a++;

foreach (var element in arr1)
{          
    int [] myRate = new int [5] {1,2,3,4,5};
    int [] rating = myRate;
    Console.WriteLine (element +": " + (rating[0]));
} a++;

作为旁注,您可以考虑在循环外创建int[],因为每次迭代都会创建相同的数组,除非您实际打算在每次新迭代时创建具有不同值的数组。

答案 1 :(得分:0)

因为" a"包含数字" 1"。

评级数组索引的第1位是2.

如果要打印数字1,则应从索引0开始。这是:

Console.WriteLine (element +": " + (rating[0]));

答案 2 :(得分:0)

如果您想要1回答,请写下:

Console.WriteLine (element +": " + a);

Console.WriteLine (element +": " + rating[0]);

因为a=rating[0];,即数组的第一个元素,其值为1.

你正在使用:

Console.WriteLine (element +": " + (rating[a]));

即。 rating[1],因为a is 1的价值。

所以rating[1]是数组的第二个元素,其值为2