我可以在这种情况下使用foreach吗?如何WriteLine字符串"酷"?

时间:2016-12-03 05:56:06

标签: c#

我学习C#并制作代码。如何打印word" cool"与foreach运营商合作:

static void Main(string[] args)
{
   string [ ] arr = {"a", "c", "a", "o", "a", "o", "a", "l"};
   string sum = ""; 

   foreach (string x in arr)
   {
      sum += x * 2;
   }
}
Console.WriteLine(sum);

我不能使用x * 2,如果我只使用sum += x,则输出为" acaoaoal"。如何接收输出" cool"通过使用foreach?

4 个答案:

答案 0 :(得分:5)

for (int i = 1; i < arr.Length; i += 2)
{
    sum += arr[i];
}

您需要循环并使用步骤i=1+2启动它。

如果您的作业是使用foreach,则需要添加另一个变量作为计数器,如果是偶数,则需要检查它。

int count = -1;
foreach(string x in arr)
{
   count++;
   if(count % 2 == 0)
      continue;

   sum += x;
}

请注意,如果字符串数组太大,则应使用StringBuilder来连接字符串。

如何使用linq:

var result = arr.Select((x, i) => i % 2 == 1 ? x:"").Where(x=>!string.IsNullOrEmpty(x)).ToArray();

Console.WriteLine(string.Join("", result));

答案 1 :(得分:3)

如果你使用for循环而不是每个循环,这可能会更容易。

for (var i = 1; i  < 8; i += 2) {
  sum += strArr [i];
}

答案 2 :(得分:1)

这有效:

string[] arr = { "a", "c", "a", "o", "a", "o", "a", "l" };
string sum = "";

foreach (string x in arr.Where((c, n) => n % 2 == 1))
{
    sum += x;
}
Console.WriteLine(sum);

你甚至可以把它写成:

string[] arr = { "a", "c", "a", "o", "a", "o", "a", "l" };
string sum = String.Join("", arr.Where((c, n) => n % 2 == 1));
Console.WriteLine(sum);

答案 3 :(得分:0)

StringBuilder output = new StringBuilder();
Array.ForEach(arr, x => { if(Array.IndexOf(arr,x) % 2 != 0) output.Append(x); });