[英]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.