[英]Wrong element output in C#
我事先表示歉意,但是在这种情况下,我对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,则表示超出范围。 非常感谢您的帮助,并在此先感谢您。
在循环中,何时执行此操作:
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[]
,因为每次迭代都创建相同的数组,除非您实际上打算在每次新迭代中创建具有不同值的数组。
因为“ a”包含数字“ 1”。
评级数组索引上的数字1是2。
如果要打印数字1,则应从索引0开始。即:
Console.WriteLine (element +": " + (rating[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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.