Программа на Java для сортировки последовательности чисел в текстовом файле

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

Программа должна запрашивать у пользователя имя входного файла и выполнять проверки, существует ли файл, содержит ли он действительные данные и т. д. Дело в том, что я понятия не имею даже, с чего начать, я пытался, но не мог достичь цели, не смог написать даже пару строк кода, потому что не знаю, с чего начать. Я знаю только, что могу использовать JFileChooser, чтобы предлагать пользователю выбрать файл.

Что ж, я знаю, что это неправильный тип вопросов, потому что мне нужно было показать, что я сделал до сих пор, или доказать, что я что-то пробовал, но дело в том, что я ничего не мог сделать, даже если я ' я пытался часами.

Что ж, если вы вообще не имеете ни малейшего представления, пора повторить то, что вы узнали о кодировании на Java. Если вы даже не можете закодировать часть, чтобы прочитать ввод, вам действительно нужна помощь вашего инструктора.

BessieTheCookie 15.04.2018 20:18

Я знаю, как читать ввод, но подумал, что показ этой части кода не будет большой помощью, поскольку основная проблема в этой программе заключается в другом, а не в чтении ввода.

J. Ill 15.04.2018 20:19

Вам нужно разбить проблему и определить шаги, необходимые для выполнения вашей задачи. 1. Позвольте пользователю ввести путь к файлу. 2. Прочтите файл в память таким образом, чтобы это было полезно для следующих шагов. 3. Отфильтруйте дубликаты. 4. Сортировать. Дело в том, что к каждой из этих проблем можно подойти независимо. Если вы не знаете, как принимать человеческий ввод, попробуйте пока жестко указать путь к файлу. Сосредоточьтесь на чтении файла в память или начните со списка / набора чисел и попытайтесь отсортировать их.

MaxG 15.04.2018 20:19

Вопросы, касающиеся помощь в выполнении домашних заданийдолжен, включают краткое изложение работы, которую вы проделали до сих пор для решения проблемы, и описание трудностей, с которыми вы ее решаете (центр помощи, Как спросить).

Zabuzard 16.04.2018 00:33

@ J.Ill StackOverflow работает не так. Пожалуйста, прочтите Как спросить. Если кто-то дает вам полный код, он делает что-то, что обычно не рекомендуется. Вот почему вы получаете ответы только с объяснениями высокого уровня.

Zabuzard 16.04.2018 00:35

(Я отредактировал вопрос, чтобы сделать его менее похожим на запрос на бесплатную работу. Хорошо, если вы сделали что-то из этого - пожалуйста, отредактируйте это в вопросе быстро, чтобы показать, что вы уже выполнили некоторую предыдущую работу. Этот мощь останавливает вопрос Запросы на выполнение домашнего задания, в любом случае, действительно гарантируют, что лицо, задающее вопрос, упускает возможность обучения, и, кроме того, его учебное заведение может принять меры за академическую нечестность).

halfer 16.04.2018 01:50

Не могли бы вы на самом деле удалить сообщение? Поскольку никто, по-видимому, не собирается помогать мне с полным кодом, этот пост просто займет память на вашем веб-хостинге и иногда приведет в ярость некоторых людей, которые наткнутся на этот пост - парень, запрашивающий бесплатную работу, вау . Так что, пожалуйста, примите хотя бы этот запрос и удалите пост. Спасибо

J. Ill 16.04.2018 10:13

Сообщение не может быть удалено, пока оно открыто, поскольку на него был принят принятый ответ (и я считаю, что даже если вы его отмените, его нельзя будет удалить). Это связано с тем, что после того, как помощник получил признание за свою хорошую работу, было бы несправедливо удалять его с него (что обычно происходит, если вопрос закрыт и удален). Однако он еще может закрыться, и в этом случае его можно будет удалить.

halfer 16.04.2018 17:10

Причина, по которой читатели часто обидчивы к голым запросам на бесплатную работу, заключается в том, что они не уважают время и ценность работы людей, а также просят людей приложить большие усилия, не отвечая вообще.

halfer 16.04.2018 17:13

Чтобы проиллюстрировать этот принцип: я, мог, иду и прошу архитектора показать несколько быстрых чертежей пристройки дома, о которой я думаю, и прошу ее сделать их бесплатно, но это было бы грубо. Я могу либо заплатить ей за ее время, либо попытаться научиться делать рисунки, а затем отправить ей по электронной почте небольшой и конкретный вопрос о них. Она вполне может захотеть сделать последнее, и с радостью, потому что она увидит, что я провел собственное исследование.

halfer 16.04.2018 17:14

Надеюсь, это поможет. В самом деле, должно быть, поскольку мы часто сталкиваемся с подобными вещами здесь, и мы хорошо знаем, как по этому поводу посоветовать.

halfer 16.04.2018 17:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
12
1 028
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Итак, вы пытаетесь создать приложение Swing! И вы используете JFileChooser, поэтому нет необходимости проверять, существует ли файл или нет, поскольку вы не увидите файл в открытом окне, которого не существует.

Что касается сортировки файла, вы читаете содержимое файла как буферный поток (возможно построчное чтение) и добавляете строку в TreeSet <Integer>, чтобы сохранялось только уникальное значение (без дублирования). В конце просто запишите данные TreeSet в файл.

Не могли бы вы, если у вас есть время и желание, напишите для меня полный код? Спасибо

J. Ill 15.04.2018 22:21
Ответ принят как подходящий

Предполагая, что вам нужна помощь, а не полный код:

  1. Прочтите текстовый файл: FileReader ...
  2. ... построчно: BufferedReader и его метод readLine()
  3. Целое число из текста: Integer.parseInt() (предположение: в каждой строке по одному числу)
  4. Хранить целые числа во чем-то, что упорядочивает их и удаляет дубликаты: TreeSet<Integer> и его метод add().
  5. Верните номера (заказанные, дубликаты удалены): iterator() (того же TreeSet<Integer>)
  6. Запись текстового файла: PrintWriter

Есть некоторые пробелы, но чтение документации и проверка соответствующих примеров восполнят их.


Without any fancy/cryptic construct:
public static void main(String[] args) throws Exception {
    TreeSet<Integer> numbers=new TreeSet<>();
    FileReader fr=new FileReader("numbers.txt");
    BufferedReader br=new BufferedReader(fr);
    String line;
    while((line=br.readLine())!=null){
        numbers.add(Integer.parseInt(line));
    }
    br.close();
    Iterator<Integer> it=numbers.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
    }
    //PrintWriter pw=new PrintWriter("result.txt");
    //while(it.hasNext()){
    //  pw.println(it.next());
    //}
    //pw.close();
}

Прокомментированная часть распечатает результат в файл.

Тестовый файл: numbers.txt

34
2345
736
2435
7436
2345
2435

Ну, в основном я попросил полный код, но я постараюсь сделать это с этой информацией, если мне удастся. Спасибо

J. Ill 15.04.2018 20:30

AScanner читать файл наверное проще.

daniu 15.04.2018 20:32

@daniu да, конечно, есть варианты.

tevemadar 15.04.2018 20:42

Что ж, я все еще не мог этого сделать, не могли бы вы, если у вас есть время, напишите мне полный код, если это не будет для вас слишком большим неудобством? Это было бы для меня настоящим спасением, и я буду вечно вам благодарен.

J. Ill 15.04.2018 20:54

@ J. Сделайте домашнее задание, дорогая мисс / мистер.

tevemadar 16.04.2018 11:44

Что ж, спасибо тебе! Теперь я ясно вижу путь.

J. Ill 16.04.2018 14:29

@tevemadar: см. комментарий под вопросом, чтобы увидеть недостатки бесплатной (домашней) работы над Stack Overflow. Автор вопроса хотел бы получить бесплатную работу, а затем удалить вопрос, что приведет к удалению заработанной вами репутации и удалению ответа из вашего профиля Stack Overflow. Хотя вы можете ответить на подобные вопросы, если хотите, стоит понять, почему лучше не делать этого: это может быть пустой тратой вашего времени.

halfer 16.04.2018 22:06

(Действительно, вопрос все еще может быть закрыт, а после этого он может быть удален, что будет иметь такой же эффект).

halfer 16.04.2018 22:08

@halfer Хотя да, я считаю, что 20-25 минут, которые прошли между OP, говоря, что они попытаются, и возвращением, что они не могут этого сделать, слишком коротко, я также нахожу этот учебный план немного странным. Это всего лишь середина семестра (2-й или 3-й месяц, в зависимости от страны), и ожидается, что люди напишут приложение с графическим интерфейсом с помощью Swing, обработки файлов и некоторого умеренно глубокого понимания коллекций?

tevemadar 17.04.2018 12:13

@halfer Идея удаления OP возникла после того, как они начали подвергаться критике в комментариях, на мой взгляд, это не было их первоначальным намерением.

tevemadar 17.04.2018 12:19

@tevemadar: возможно, хотя я не уверен в этом. Однако они знали, что это не по теме, и все равно выложили его, так что ... :-)

halfer 17.04.2018 12:29

Другие вопросы по теме