Java - создание строки путем выбора определенных чисел из текстового файла - PullRequest
1 голос
/ 04 октября 2009

У меня есть файл .txt с номерами 1-31, который называется numbers. Я настроил сканер так:

    cardCreator = new Scanner (new File ("numbers"));

После этого я немного запутался, какие методы я мог бы использовать.

Я хочу создать условный оператор, который будет проходить через numbers,, оценивать каждую строку (или числа 1-31) и включать каждое число в строку с именем numbersonCard, если они соответствуют определенным критериям.

Я могу как-то представить, как это будет работать (возможно, используя hasNext(), или nextLine() или что-то в этом роде), но я все еще немного перегружен API ...

Какие-либо предложения относительно того, какие методы я мог бы использовать?

Ответы [ 3 ]

4 голосов
/ 04 октября 2009

Информатика - все о разложении. Разбейте свою проблему на более мелкие.

Перво-наперво: вы можете прочитать этот файл и отправить его обратно?

Далее, вы можете разбить каждую строку на ее части?

Тогда, можете ли вы обработать каждую цифру как хотите?

Вы добьетесь более быстрого прогресса, если сможете решить проблему.

Я думаю, Java-альманах является одним из лучших источников примеров фрагментов. Может быть, это может помочь вам с некоторыми основами.

1 голос
/ 04 октября 2009

Чтобы оказать немного более конкретную помощь, чем превосходные ответы Даффимо и Роба, ваши инстинкты верны. Вы, вероятно, хотите что-то вроде этого:

cardCreator = new Scanner (new File ("numbers"));
while (cardCreator.hasNextInt()) {
    int number = cardCreator.nextInt();
    // do something with number
}
cardCreator.close();

hasNext () и nextInt () избавят вас от получения строки из сканера и необходимости разбирать ее самостоятельно. Однако я не уверен, что ограничитель сканера по умолчанию будет интерпретировать CRLF конца строки Windows как один или два разделителя.

1 голос
/ 04 октября 2009

Опираясь на отличный совет Даффимо, вы можете разбить проблему на псевдокод высокого уровня. Самое замечательное в том, что вы можете написать эти шаги в виде комментариев в своем коде, а затем решить каждый бит как отдельную проблему. Более того, если вы решите проблему правильно, вы можете поместить каждую часть в отдельный метод.

Например:

// Open the file
// Read in all the numbers
// For each number, does it meet our criteria?
// If so, add it to the list

Теперь вы можете решать каждую часть проблемы несколько изолированно. Кроме того, вы можете начать понимать, что вы можете разбить это на методы, которые могут открыть файл (и справиться с любыми ошибками, вызванными API), прочитать все числа из файла, определить, соответствует ли данное число вашим критериям и т. д. Немного умный метод именования, и ваш код будет буквально читаться как псевдокод, что сделает его более удобным для сопровождения в будущем.

...