2013-03-26 62 views
1

我有一個名爲str的數組,它由一系列逗號分隔對組成。例如,str [0]是「Bill,John」。我試圖通過str循環並將每一對在逗號處分成稱爲第一和第二的數組。我很難實現這一點,如果任何人都可以幫助,我將不勝感激。這是我正在使用的代碼:C# - 將循環內的數組初始化爲不同數組中的值

while (a < length) 
{ 
    var Pairs = str[a].Split(','); 
    Console.WriteLine(a + ": " + str[a]); 
    first[a] = Pairs[0]; 
    second[a] = Pairs[1]; 
    a++; 
} 

我遇到的問題是第一個[a]和第二個[a]行。我無法弄清楚這些變量應該是什麼樣的數據類型,看起來好像我在while循環之前聲明的每種類型都有不同的錯誤。

這裏是我得到的循環中的變量實現的錯誤:
如果我聲明爲數組:「無法適用與[]的索引類型爲‘System.Array的’的表達」

Array first; 
Array second; 
while (a < length) 
{ 
    var Pairs = str[a].Split(','); 
    Console.WriteLine(a + ": " + str[a]); 
    first[a] = Pairs[0]; 
    second[a] = Pairs[1]; 
    a++; 
} 

爲整數:「不能應用與[]索引到類型‘INT’的表述」

int first; 
int second; 
while (a < length) 
{ 
    var Pairs = str[a].Split(','); 
    Console.WriteLine(a + ": " + str[a]); 
    first[a] = Pairs[0]; 
    second[a] = Pairs[1]; 
    a++; 
} 

作爲字符串:「屬性或索引‘string.this [INT]’不能被分配到 - - 它是隻讀」

string first; 
string second; 
while (a < length) 
{ 
    var Pairs = str[a].Split(','); 
    Console.WriteLine(a + ": " + str[a]); 
    first[a] = Pairs[0]; 
    second[a] = Pairs[1]; 
    a++; 
} 

爲瓦爾:‘隱式類型的局部變量必須初始化’(這是錯誤的聲明,而不是循環本身。如果我初始化它,它是隱式轉換爲上述數據類型之一,並投擲我已經提到過與之相關的錯誤)

var first; 
var second; 
while (a < length) 
{ 
    var Pairs = str[a].Split(','); 
    Console.WriteLine(a + ": " + str[a]); 
    first[a] = Pairs[0]; 
    second[a] = Pairs[1]; 
    a++; 
} 
+2

有什麼問題嗎? – 2013-03-26 04:26:14

+1

你有什麼問題?你是否遇到異常?輸出不正確?使用它難以確定您想要的內容/問題來自您的文本。 – 2013-03-26 04:26:16

+1

它看起來不像你的代碼有什麼問題。這可能會更好,但我希望能夠發揮作用。 – 2013-03-26 04:27:46

回答

3

基於新的編輯:

好吧,類型數組是從不用過的。它是內部的。要使用你需要使用括號標記的數組(這似乎有些奇怪,但是這是來自C,C++和Java)。

這看起來是這樣的:

string [10] first; 

然而,在更現代的C#你可以使用泛型。它們在現代面向對象的世界中變得更有意義。要使用它們,請指定它們所在的類型。在許多方面,他們的行爲就像你期望的數組工作,但增加了功能。要使用它們,在你的例子,它看起來像這樣:

ArrayList<string> first = new ArrayList<string>(); 
ArrayList<string> second = new ArrayList<string>(); 

foreach(string a in str) 
{ 
    var Pairs = a.Split(','); 
    first.Add(Pairs[0]); 
    second.Add(Pairs[1]); 
} 

最簡單的方法在C#中要做到這一點與foreach循環。

int index = 0; 

foreach(string a in str) 
{ 
    var Pairs = a.Split(','); 
    first[index] = Pairs[0]; 
    second[index] = Pairs[1]; 
    index++; 
} 

然而,你的代碼可以工作 - 除了我沒有看到長從何而來。也許你的代碼應該是這樣的?

int a = 0; 
while (a < str.Length) 
{ 
    var Pairs = str[a].Split(','); 
    Console.WriteLine(a + ": " + str[a]); 
    first[a] = Pairs[0]; 
    second[a] = Pairs[1]; 
    a++; 
} 
+0

長度只是我之前計算的文本文件的長度。我遇到的問題是第一個[a]和第二個[a]行。我無法弄清楚這些變量應該是什麼樣的數據類型,看起來好像我在while循環之前聲明的每種類型都有不同的錯誤。 – noclist 2013-03-26 11:12:57

+0

@noclist - 你必須在你的問題中提出問題描述 - 你得到什麼錯誤,輸入什麼?我們無法讀懂你的想法。 – Hogan 2013-03-26 12:03:55

+0

感謝您的回答 – noclist 2013-04-27 22:41:54

0

嘗試對你的代碼一個

string[] str = new string[1]; 

     str[0] = "Bill,John"; 

     string[] first = new string[1]; 
     string[] second = new string[1]; 
     string[] pairs = new string[1]; 

     int a = 0; 
     while(a<str.Length) 
     { 
      pairs = str[a].Split(','); 
      first[a] = pairs[0]; 
      second[a] = pairs[1]; 
      Console.WriteLine(first[a] + " - " + second[a]); 
      a++; 
     } 

     int i = 0; 
     foreach (string item in str) 
     { 
      pairs = item.Split(','); 
      int k = pairs.Count(); 
      first[i] = pairs[0]; 
      second[i] = pairs[1]; 
      Console.WriteLine(first[i] + " - " + second[i]); 
      i++; 
     } 
+0

幹得好我的回答@yug。你可能會考慮給你的答案帶來新的東西,而不是僅僅回答已經存在的答案。 – Hogan 2013-03-26 12:05:44