这个问题已经在这里有了答案: 了解切片符号 32个答案 好的,所以我搜索了多个线程,并遇到了有关诸如this和this的反向列表的有用讨论; 我从那些中得到的是使用 要么 但是我不明白这背后的逻辑! 假设我要使用 我将得到'olle'而不 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我想用console.ReadLine()
反转一个数组,但我被卡住了。
这是问题的陈述。
给出一个由 10 个自然数组成的数组。 以相反的顺序显示字符串中的数字。
字符串中的数字在一行中给出,并用空格分隔。 应用程序将在一行中显示数字,它们之间用空格分隔。
例子:
对于输入数据:
1 2 3 4 5 6 7 8 9 10
控制台将显示:
10 9 8 7 6 5 4 3 2 1
这是我的代码:
string number = Convert.ToString(Console.ReadLine());
List<string> originalList = new List<string>();
for (int i = 0; i < 1; i++)
{
originalList.Add(number);
}
foreach (string item in originalList)
{
Console.Write(item + " ");
}
originalList.Reverse();
foreach (string item in originalList)
{
Console.WriteLine(item + " ");
}
Console.WriteLine();
字符串中的数字在一行中给出,并用空格分隔。
以下代码不正确,因为Console.ReadLine
在遇到空格时不会停止读取。 它会将整个输入作为originalList
中的一个条目来使用。
string number = Convert.ToString(Console.ReadLine());
List<string> originalList = new List<string>();
for (int i = 0; i < 1; i++)
{
originalList.Add(number);
}
// originalList is now [ "1 2 3..." ];
相反,您应该查看String.Split
。
string input = Console.ReadLine();
List<string> originalList = input.Split(' ').ToList();
// originalList is now [ "1", "2", "3", ... ];
您现在可以使用List.Reverse
和String.Join
来获取您的 output。
originalList.Reverse();
string output = string.Join(' ', originalList);
Console.WriteLine(output);
需要string.Split (' ')
或for
循环或while
循环
使用string.Split (' ')
string [] splitArray = number.Split (' ');
for (int i = 0; i < splitArray.Length; i++)
{
originalList.Add(splitArray [i]);
}
//rest of the code would be same
For
String readvalues="";
for (int i=0;i <number.Length;i++)
{
if (i==number Length-1)
{
readvalues += number [i];
}
if (number[i]==" " || i==number.Length-1)
{
originalList.Add (readvalues);
readvalues="";
}
else
{
readvalues += number [i];
}
}
//rest of the code would be same
While
循环
int index=0;
String readvalues="";
while (index < number.Length)
{
if (index==number.Length-1)
{
readvalues += number [index];
}
if (number[index]==" " ||index==number.Length-1)
{
originalList.Add (readvalues);
readvalues="";
}
else
{
readvalues += number [index];
}
index++;
}
//rest of the code would be same
您可以尝试在Linq ( Reverse ) 的帮助下查询初始字符串:
代码:
using System.Linq;
...
// For Test (comment it out for release)
string source = "1 2 3 4 5 6 7 8 9 10";
// Uncomment for release
// string source = Console.ReadLine();
string result = string.Join(" ", source
.Split(' ', StringSplitOptions.RemoveEmptyEntries)
.Reverse());
Console.WriteLine(result);
结果:
10 9 8 7 6 5 4 3 2 1
我想,我有一个解决方案给你,你到底想要什么。 请检查代码并告诉我=>
void Test()
{
string number = Convert.ToString(Console.ReadLine());
List<string> originalList = new List<string>();
if(!string.IsNullOrEmpty(number) && !string.IsNullOrWhiteSpace(number) )
{
originalList=number.Split(" ").ToList();
originalList.Reverse();
Console.WriteLine(string.Join(" ", originalList));
}
}
注意:使用这三个命名空间using System;
, using System.Linq;
, using System.Collections.Generic;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.