Почему я не могу правильно назначить переменные для массива?
Итак, я пишу программу, которая вводит число (двоичное), а затем назначает каждую цифру этого ввода в массив.
static void Main(string[] args)
{
Console.Write("Please enter a binary number: ");
String input = Console.ReadLine();
int inputLength = input.Length;
int nInput = Convert.ToInt32(input);
int[] digits;
digits = new int[inputLength];
int remain = 10;
int divider = 1;
for (int i = 0; i > inputLength; i++)
{
digits[i] = (nInput % remain) / divider;
remain = remain * 10;
divider = divider * 10;
}
Console.WriteLine("Demo number " + digits[0]);
}
Тем не менее, кажется, что все мои массивы имеют значение 0, когда я запускаю код. Это почему?
Так что, если мой ввод 11010,digit[0]
должно быть 0.digit[1]
должно быть 1.digit[2]
должно быть 0. digit[3]
должно быть 1.digit[4]
должно быть 1.
2 ответа
Цикл не выполняется, поскольку его условие всегда ложно; Таким образом, вы получаете его значение по умолчанию, измените условие как i < inputLength;
Если вы сделаете это и введете "123"
Вывод на консоль будет: Demo number 3
; И массив будет
digit[0]=3
digit[1]=2
digit[2]=1
Несколько предложений по улучшению вашего кода:
- использование
int.TryParse();
вместоConvert.ToInt32();
во избежание исключения исключения. Вы можете увидеть сравнение здесь - Поскольку числа находятся в массиве, вы можете изменить их, используя
Array.Reverse()
То есть..
String input =Console.ReadLine();
int nInput;
int inputLength = input.Length;
if (int.TryParse(input, out nInput))
{
int[] digits = new int[inputLength];
Array.Reverse(digits);
Console.WriteLine("Reversed Number is:{0}",String.Join( "",digits));
}
else { Console.WriteLine("Wrong input"); }
Попробуйте этот код!
static void Main(string[] args)
{
string input = Console.ReadLine();
int[] vec = new int[input.Length];
int i = 0;
foreach (char ch in input) {
vec[i] = Convert.ToInt32(ch.ToString());
i++;
}
foreach (int numaux in vec) {
Console.WriteLine(numaux);
}
Console.Read();
}
Просто переберите строку ввода с помощью оператора foreach (избавит вас от уже указанной ошибки) и преобразуйте каждый символ в целое число, которое будет храниться внутри массива.
Ура!