2017-08-01 72 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 "); 
}