我学习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?
答案 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); });