簡體   English   中英

帶有 inputData 的反向列表 [重復]

[英]reverse list with inputData [duplicate]

我想用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.ReverseString.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM