Это потому, что length
- это массив, а не фактический элемент (который, я думаю, вы хотите напечатать). Исправить несложно, замените Console.Write("{0} ", length);
на Console.Write("{0} ", length[i]);
Вот несколько советов для вашего кода:
Я вижу, что вы используете циклы while
для итерации по всему, поэтомуя расскажу вам немного о цикле другого типа, цикле for
. for
обычно используется для выполнения чего-то x раз и строится примерно так:
for (int i = 0; i < length.Length; i++)
Это может показаться сложным, но на самом деле это довольно просто, позвольте мне объяснить. Мы можем разбить цикл for
на 3 секции. Объявление итератора, условие итерации и приращение. int i = 0
является объявлением итератора, здесь мы объявляем и определяем переменную с именем i
, которая является int
со значением 0
. В следующем блоке (i < length
) мы объявляем условие, когда это условие равно true
, мы продолжаем идти, когда оно ложно, мы прекращаем цикл. И, наконец, инкремент или шаг (i++
), он выполняется после каждого цикла и увеличивает итератор (i
в этом случае) на 1. Перезапись кода с помощью циклов for
приводит к следующему:
int[] array = new int[] {1, 12, 123, 1234, 12345};
int[] length = new int[array.Length];
for (int i = 0; i < array.Length; i++)
{
length[i] = int.Parse(((array[i]).ToString()).Length);
}
for (int i = 0; i < length.Length; i++)
{
Console.WriteLine("{0} ", length[i]);
}
Это можно еще улучшить, например, в настоящее время мы дважды перебираем те же данные, что по существу, что означает, что мы тратим время. А также, поскольку массивы перечисляются в C #, мы можем использовать цикл foreach
. Это другой тип цикла, который почти такой же, как цикл for
, но вместо того, чтобы делать что-то x количество раз, которое мы используем для чего-то с каждым элементом перечислимого элемента. Используя его, мы можем сделать это:
int[] array = new int[] {1, 12, 123, 1234, 12345};
foreach (int element in array)
{
Console.WriteLine($"{element.ToString().Length} ");
}
Я также использовал то, что называется интерполяция строк ($
перед "
)