Какая структура данных (или тип) будет полезна для определения количества цифр в числе?

Привет, товарищи программисты,

Я знаю, что это должно быть легко, но мне нужно определить количество цифр числа для проверки всех комбинаций в проекте. Действия пользователя не должны влиять на количество цифр, потому что изменение количества цифр вызывает ошибку «Индекс вне диапазона». (Да, я использую для этого массивы)

Скажем, мне нужно использовать четырехзначное число.

int Nmr=1000;
Nmr--;
Console.Write(Nmr);// The output will be 999 but I need 0999

Использование строкового типа и операторов if может привести к альтернативному решению...

int Nmr=1000;
Nmr--;
string number=Nmr.ToString();
if (Nmr<1000) number="0"+number;
if (Nmr<100) number="00"+number;
if (Nmr<10) number="000"+number;
Console.Write(Nmr); //That gives me 0999

Но тогда это дает мне сложность и ненужную потерю времени, с которой я бы не хотел столкнуться. Я даже не говорю о больших ценностях.

Итак, что бы вы предложили? Изменить: оба метода ToString("0000") и PadLeft полезны.

Спасибо, Матеус Коутиньо Мартино и Blorgbeard. знак равно


person Czerwone    schedule 26.08.2015    source источник
comment
Вы можете указать формат при вызове ToString: Nmr.ToString("0000");   -  person Blorgbeard    schedule 26.08.2015
comment
Если вам всегда нужны начальные 0, просто сделайте Nmr.PadLeft('0',4). Это гарантирует, что у вас всегда будет не менее 4 символов, а если нет, он добавит символ, который вы хотите иметь указанной длины.   -  person Philippe Paré    schedule 26.08.2015
comment
Кроме того, ваше альтернативное решение добавит слишком много нулей для чисел меньше 100. Вам нужны некоторые операторы else.   -  person Blorgbeard    schedule 26.08.2015


Ответы (3)


Ну и с методом PadLeft класса String...

int Nmr=1000;    
Nmr--;    
Console.Write(Nmr.ToString().PadLeft(4,'0')); //That gives you ever four digits.

Или, если вы предпочитаете более подробное объяснение ...

int Nmr=1000;    
Nmr--;    
String number = Nmr.ToString();
Console.Write(number.PadLeft(4,'0')); // four digits again;
person Mateus Coutinho Martino    schedule 26.08.2015

Вы можете указать формат при вызове ToString - например.

string number = Nmr.ToString("0000");

См. документы: Int32.ToString(string) и Строки пользовательского числового формата.

person Blorgbeard    schedule 26.08.2015

Описатель настраиваемого формата "0" служит символом нулевого заполнителя. Вот вам небольшая идея:

            double numberS;

            numberS = 123;
             Console.WriteLine(numberS.ToString("00000"));
             Console.WriteLine(String.Format("{0:00000}", value));
             // Displays 00123 

Вы можете посмотреть на https://msdn.microsoft.com/en-us/library/0c899ak8.aspx, чтобы узнать больше.

person anam    schedule 26.08.2015