#c# #arrays
#c# #массивы
Вопрос:
Я играю с C #. Я пытаюсь написать программу, которая помещает цитату, введенную пользователем, в квадрат символов. Итак, проблема в том, что … пользователю необходимо указать количество строк перед вводом цитаты. Я хочу убрать этот момент, чтобы пользователь просто вводил строки своей фразы (каждая строка является новым элементом в массиве строк, поэтому я предполагаю, что программа должна как бы объявить ее сама по себе? ..). Надеюсь, я ясно объяснил, что я имел в виду x).
Я приложил программный код ниже. Я знаю, что это не идеально (например, при вводе количества строк я использую преобразование в целое число, и если пользователь вводит букву, то это может смутить моего электронного друга, это временное решение, так как я не хочу спрашивать об этом x) Программасам должен считать эти строки! x)) Хотя я не понимаю, почему символы с левой стороны отображаются неправильно, когда программа отображает выходные данные, но я думаю, что это тоже пока не имеет значения).
//Greet a user, asking for the number of lines.
Console.WriteLine("Greetings! I can put any phrase into beautiful @-square."
"n" "Wanna try? How many lines in the quote: ");
int numberOfLines = Convert.ToInt32(Console.ReadLine());
//Asking for each line.
string[] lines = new string[numberOfLines];
for (int i = 0; i < numberOfLines; i )
{
Console.WriteLine("Enter the line: ");
lines[i] = Console.ReadLine();
}
//Looking for the biggest line
int length = 0;
for (int i = 0; i < numberOfLines; i )
{
if (length < lines[i].Length) length = lines[i].Length;
}
//Starting framing
char doggy = '@';
char space = ' ';
length = 4;
string frame = new String(doggy, length);
Console.WriteLine(frame);
for (int i = 0; i < numberOfLines; i )
{
string result = new string(space, length - 3 - lines[i].Length);
Console.WriteLine(doggy space lines[i] result doggy);
}
Console.WriteLine(frame);
Console.ReadLine();
}
}
}
Комментарии:
1.
List<T>
Вместо этого используйте a .2. Помимо использования списка, неясно, о чем вы спрашиваете в данный момент. Я нигде не вижу, чтобы тело вашего вопроса ссылалось на «массив без размера» — и мы не знаем, какой результат вы на самом деле получаете и что вы ожидали получить. («Я не понимаю, почему символы с левой стороны отображаются неправильно» не говорит нам ни о чем из этого.) Пожалуйста, прочитайте codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question и отредактируйте свой вопрос, чтобы прояснить его.
3. List<T> проще и гибче, чем array , поэтому он решит, по крайней мере, проблему необходимости знать конечную / максимальную длину массива.
Ответ №1:
Существует разрыв в производительности и функциональности между «общими списками» и массивами, вы можете прочитать больше о минусах и плюсах этих двух объектов в Интернете,
например, вы можете использовать list как Dai, упомянутый в комментарии, подобном этому
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
или вы можете использовать arraylist
ArrayList arraylist = new ArrayList();
arraylist.Add();
или даже вы можете изменить размер массива в любое время, но он стирает данные в нем
int[] arr = new int[100];
существует функция toArray(), с помощью которой вы можете изменить общий список на массив
Комментарии:
1. Сегодня нет законных оснований для использования
ArrayList
— ни в какой момент, начиная с .NET Framework 2.0 в 2005 году. Его следует удалить из . ЧИСТАЯ полностью, имо.
Ответ №2:
Ваша проблема с выводом левой стороны заключается в том, что вы добавляете два значения char . Это не то, чего вы ожидаете. Вы должны преобразовать символ в строку, чтобы добавить его к другим строкам:
Console.WriteLine(doggy.ToString() space.ToString() lines[i] result doggy.ToString());