Sam_gaik Ответов: 3

Как напечатать номерную последовательность в обратном порядке?


Привет.. я хочу напечатать 5-значное число в обратном порядке..

ех.. 49999,49998,49997,49996.....так далее

еще одна мысль количество печати зависит от ввода пользователя
то есть если пользователь вводит 3, то он отображает только 3 печати как 49999,49998,49997



есть идеи? .. ...заранее спасибо...

Что я уже пробовал:

for(int i =50000; i >=printCopies; i--)
{
   reslt += i.ToString("00000") + System.Environment.NewLine;
}

Patrice T

В чем проблема с вашим кодом?

Sam_gaik

Это работает не так, как ожидалось..

Patrice T

Разрабатывать.

3 Ответов

Рейтинг:
23

OriginalGriff

Самый простой способ понять это так:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < userInputLimit; i++)
   {
   sb.AppendLine((50000 - i).ToString());
   }
string result = sb.ToString();
Использование StringBuilder лучше, чем конкатенация строк, поскольку он "расширяется" автоматически, а не создает новую строку каждый раз, когда вы добавляете новый бит к старому.


Sam_gaik

Он работает...вами

OriginalGriff

Всегда пожалуйста!

Рейтинг:
1

MadMyche

Что выглядит, чтобы быть на правильном пути.

Мой единственный вопрос/рекомендация из того, что вы показали, касается reslt :
Это не должна быть строковая переменная, потому что она есть неизменный Если это так, то вам следует заменить его на StringBuilder, который предназначен для этого.

StringBuilder sbResult = new StringBuilder();

for(int i =50000; i >=printCopies; i--)
{
	sbResult.AppendLine( i.ToString("00000") );
}

reslt = sbResult.ToString();
Рекомендации:
MS Docs: Strings - руководство по программированию на C# [^]
MS Docs: класс StringBuilder (System.Text)[^]


Рейтинг:
0

George Swan

Я что-то упустил? Вы просто хотите напечатать строку с разделенными запятыми уменьшающимися значениями вот так:


 int copies = 3;
 int initialValue = 5000;
 string separator = string.Empty;
 for (int i=0;i <copies;i++)
 {
     Console.Write(separator);
     Console.Write(initialValue - i);
     if (separator.Length==0) separator = ",";
 }
Console.WriteLine();

Если вы хотите, чтобы IEnumerable так что вы можете использовать Linq для выбора выходных данных. Попробовать это


  IEnumerable <int > numbers = Enumerable.Range(initialValue-copies+1, copies).Reverse();
  IEnumerable <string > numberStrings = Enumerable.Range(initialValue , copies).Select((x,i) = > (x-(i*2)).ToString());
 //print  one number per line
           foreach (int num in numbers)
            {
                Console.WriteLine(num);
            }
//use IEnumerable <string > to join the strings together to give a comma separated string value
            Console.WriteLine(string.Join(',', numberStrings));


Sam_gaik

Спасибо за ваше предложение... !