Могу я заставить вас сделать что-нибудь?
Выключите компьютер (возможно, после распечатки описания проблемы) и сядьте с карандашом и бумагой
Подумайте о проблеме на английском языке sh (или ваш родной язык)
- У вас есть файл mov ie info, по одному mov ie на строку
- Вам нужно прочитать файл, взять ввод от пользователя, который представляет собой числовой индекс mov ie в строках файла, и показывает информацию об этом mov ie в консоли
Причина Я прошу вас включить выключенный компьютер - это когда вы сидите с открытой визуальной студией и излагаете проблему, есть большой соблазн начать писать код, прежде чем думать о том, что нужно написать. Это как если вас просят построить мост, и вы немедленно отправляетесь на двор строителей и размещаете заказ на 10000 кирпичей - первый шаг к строительству моста - это выяснить все требования, нарисовать его, произвести некоторые расчеты, подумать о том, что его нужно поддерживать сейчас и в будущем. Построение моста - большая задача, это программирование, которое у вас есть, - относительно небольшая задача, но она большая для вас, потому что вы только начинаете. Как только вы поймете ценность этих предварительных упражнений по определению объема работ, я обещаю вам, что вы будете использовать их на протяжении всей своей карьеры.
Проблемы станут больше, но подход останется прежним; Изложение вашего алгоритма на бумаге очень поможет, и его следует рассматривать как написание плана эссе или составление предложения в уме на английском sh, потому что вы родной английский sh, преобразовывая его в то, как испанец sh человек сказал бы это, затем перевел бы это на испанский sh слов и произнес бы это. Все, что вы делаете, когда разрабатываете программное обеспечение, будет упражнением в переводе, от обзора заголовка до подробного обзора, до мелкозернистых процессов и, в конечном итоге, до компьютерного кода
Вы всегда можете думать на английском sh и вам придется переводить свой Engli sh мысли к c# действиям; вам нужно сначала записать процесс на английском языке sh. В конце концов вы будете думать на C# для некоторых вещей, но он всегда будет смешиваться с английским sh, особенно при работе с обычными пользователями
Вместо ручки и бумаги вы также можете сделать это в c# комментарии затем переводятся под ними (и в итоге получается красиво прокомментированный код, бонус), но, как новичок, вы получите гораздо больше от упражнения по визуализации с помощью ручки и бумаги. Вы можете легко создавать блок-схемы, боковые примечания, вставки и стирать вещи - подход Treeware всегда поможет
Итак, ваш алгоритм может выглядеть так:
- Прочтите все строки файла
- работать через них по одному
- превратить строку в объект mov ie - выноска для себя, нужен объект mov ie, как он выглядит например?
- добавить его в коллекцию Mov ie объектов
- , что часть чтения сделана - следует где-то хранить эту коллекцию фильмов. Должен сделать эту часть чтения автономной.
- Теперь я знаю, сколько фильмов я прочитал из файла, потому что у меня есть коллекция с подсчетом
- спросить у пользователя индекс
- напечатайте mov ie по этому индексу. Нет, подождите. Материал в c# равен нулю, поэтому, если пользователь хочет mov ie 1, он будет в индексе 0 списка / массива / чего угодно - не забудьте сделать -1 !!
- спросите user для другого индекса - это повторяется, поэтому мне, вероятно, понадобится al oop. Еще одно замечание для себя: нужен способ выйти из l oop
Затем вы можете добавить
- печать mov ie требует разрушения
- должен иметь отдельный фрагмент кода, который печатает mov ie
- о, там была лекция о ToString и о том, как ее можно использовать для создания строкового представления настраиваемого объекта. Обратите внимание на то, что нужно самостоятельно создать ToString в mov ie, затем вы можете просто распечатать объект mov ie, и он будет ToStringed и автоматически отформатирован
Следующее, что я попрошу вас сделать, и это большая просьба, - это временно (или, возможно, навсегда) отложить весь код, который вы уже написали. Некоторые биты можно использовать, некоторые представляют собой беспорядочные мысли без четкого алгоритма
Ваш класс mov ie, вероятно, в порядке
Ваш метод View содержит биты, которые были бы полезны для ToString
Метод, который читает файл, тоже в порядке
Начните с простого, со stati c void main, который сначала читает фильмы (вызывает метод ReadLibrary, который возвращает List <> of Movies) и вводит al oop, которое показывает пользователю меню
Запрос ввода, только индекс mov ie для печати - ничего из этого не сохраняется, добавляются новые фильмы и т.д. c. Надо упростить запуск
Распечатать mov ie out, l oop снова округлить
С тем, что у вас уже есть в чтении, класс mov ie, превращая это Если посмотреть на переопределение ToString, вы сможете выполнить текущую задачу примерно за 10 или меньше строк кода. Если вы go значительно превысили это (а вы это делаете сейчас), то ваше мышление пошло не так.
Например, вы запрашиваете ввод, а затем говорите: «если они ввели 1, то иначе, если они ввел 2, затем ... "
Возьмите их ввод, превратите его в число и покажите mov ie под этим номером (без единицы) в коллекции. Это делает его действительно динамичным c. Подумайте, что произойдет, если они введут 999999 для смеха, а ваша коллекция mov ie будет содержать только 10 фильмов. Поставьте чек, чтобы он не сломался. Вы можете go вернуться к своей статье, где говорится: «попросите пользователя указать индекс», который вы можете добавить »и убедиться, что это не сумасшедшее значение»
Имейте метод AskString, который принимает строку question, печатает вопрос, запрашивает ввод и возвращает его
Имейте метод AskInt, который использует метод AskString и преобразует его возвращаемое значение в int. расширите метод, чтобы он мог принимать еще два параметра, а также нижнюю и верхнюю границы вопроса. Если пользователь вводит число, выходящее за границы, повторяйте AskString, пока он не введет разумное значение
Я не могу, с чистой совестью, делать за вас домашнее задание, но я представляю этот ответ как обучающий вас, как решить вашу собственную проблему. Все нужные вам биты уже присутствуют в том, что вы написали где-то , но им не хватает структуры и предусмотрительности
Я без колебаний постоянно редактирую этот ответ, чтобы ответить на дальнейшие вопросы, которые у вас есть. комментарий о том, что нужно