2017-08-01 103 views
-6
StringBuilder sb = new StringBuilder(); 

for (int i = 0; i < daysOfWeek.Length; i++) 
{ 
    sb.Append(daysOfWeek[i]); 
    if (i < daysOfWeek.Length - 2) 
     sb.Append(", "); 
    else if (i == daysOfWeek.Length - 2) 
     sb.Append(" and "); 
} 

Console.WriteLine(sb.ToString()); 

我明白這個塊的代碼一切除了什麼-2 daysOfWeek.Length解釋這個給我,請

它是什麼,從減2之後呢?

+4

這是一個從一週的天減2。可能打算在一週的最後一天在那裏貼上「and」字樣。你爲什麼不嘗試使用它,看看輸出的差別是什麼?代碼在你面前玩。 – mason

+1

請仔細閱讀【問】,特別是關於寫出優秀標題的部分,以及「搜索和研究」部分。 –

+0

daysOfWeek是一個對象,它有一個屬性(可能是int),你可以認爲它是「7」。然後減去2,得到5. – user7733611

回答

1

那麼daysOfWeek.Length然而很多天都在陣列daysOfWeek這應該是太陽星期一星期三等如果我不得不猜測。 -2從該數中減去,然後比較i在哪個迭代上。我對C#不太熟悉,但如果陣列一週中有7天,它應該是7 - 2。由於0是在陣列中的首位,這意味着它應打印類似,Monday, Tuesday, Wednesday, Thursday, Friday, Saturday and Sunday

+1

只有一個「和」(不是兩個)。 –

+0

它是7 - 2,長度是項目數量,而不是索引,以獲得長度爲1的索引,並且這是針對倒數第二個元素的,他使用7-2; – Gusman

+0

修正了,謝謝@Gusman – J0hn

0
void Main() 
{ 
    var daysOfWeek = GetDaysOfWeek(); 
    MethodA(daysOfWeek); 
    MethodB(daysOfWeek); 
} 

void MethodA(string[] daysOfWeek) 
{ 
    StringBuilder sb = new StringBuilder(); 

    for (int i = 0; i < daysOfWeek.Length; i++) 
    { 
     sb.Append(daysOfWeek[i]); 

     if (i < daysOfWeek.Length - 2) 
      sb.Append(", "); 
     else if (i == daysOfWeek.Length - 2) 
      sb.Append(" and "); 
    } 

    Console.WriteLine(sb.ToString()); 
} 

void MethodB(string[] daysOfWeek) 
{ 
    StringBuilder sb = new StringBuilder(); 

    for (int i = 0; i < daysOfWeek.Length; i++) 
    { 
     sb.Append(daysOfWeek[i]); 

     if (i < daysOfWeek.Length) 
      sb.Append(", "); 
    } 

    Console.WriteLine(sb.ToString()); 
} 

public string[] GetDaysOfWeek() 
{ 
    return (new List<string>{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}).ToArray() ; 
} 

這對美化。在一週的最後一天之前,它會「粘住」字符串生成器。

方法A:週日,週一,週二,週三,週四,週五和週六

方法B:週日,週一,週二,週三,週四,週五,週六,

下一頁當你有這樣的簡單代碼的問題時,試試吧!看看它做了什麼。創建一個像我上面創建的小程序並在Visual Studio或Linqpad中運行它。

0

int i是所使用的索引來遍歷daysOfWeek

在C#,陣列是基於零,這意味着,一個陣列的第一個元素是MyArray[0]

MyArray.Length返回數組中元素的數目,從一開始。

如果你的數組只有1個元素,.Length是1;你不能做MyArray[MyArray.Length],因爲那會導致異常;你做MyArray[MyArray.Length - 1]所以你「零基」你的長度。

這是你的循環與評論:

for (int i = 0; i < daysOfWeek.Length; i++) 
{ 
    sb.Append(daysOfWeek[i]); 
    if (i < daysOfWeek.Length - 2) //If the element is not the last or the penultimate do something 
     sb.Append(", "); 
    else if (i == daysOfWeek.Length - 2) //if the element is the penultimate of my array, instead of a "comma", put an "and". 
     sb.Append(" and "); 
}