Я застрял на своем задании по Java прямо сейчас. Что мне нужно сделать, так это написать программу, которая будет сортировать последовательность чисел в текстовом файле, и эта программа должна читать произвольное количество целых чисел из файла, сортировать его, удалять любые дубликаты и сохранять новый список в том же файл.
Программа должна запрашивать у пользователя имя входного файла и выполнять проверки, существует ли файл, содержит ли он действительные данные и т. д. Дело в том, что я понятия не имею даже, с чего начать, я пытался, но не мог достичь цели, не смог написать даже пару строк кода, потому что не знаю, с чего начать. Я знаю только, что могу использовать JFileChooser, чтобы предлагать пользователю выбрать файл.
Что ж, я знаю, что это неправильный тип вопросов, потому что мне нужно было показать, что я сделал до сих пор, или доказать, что я что-то пробовал, но дело в том, что я ничего не мог сделать, даже если я ' я пытался часами.
Что ж, если вы вообще не имеете ни малейшего представления, пора повторить то, что вы узнали о кодировании на Java. Если вы даже не можете закодировать часть, чтобы прочитать ввод, вам действительно нужна помощь вашего инструктора.
Я знаю, как читать ввод, но подумал, что показ этой части кода не будет большой помощью, поскольку основная проблема в этой программе заключается в другом, а не в чтении ввода.
Вам нужно разбить проблему и определить шаги, необходимые для выполнения вашей задачи. 1. Позвольте пользователю ввести путь к файлу. 2. Прочтите файл в память таким образом, чтобы это было полезно для следующих шагов. 3. Отфильтруйте дубликаты. 4. Сортировать. Дело в том, что к каждой из этих проблем можно подойти независимо. Если вы не знаете, как принимать человеческий ввод, попробуйте пока жестко указать путь к файлу. Сосредоточьтесь на чтении файла в память или начните со списка / набора чисел и попытайтесь отсортировать их.
Вопросы, касающиеся помощь в выполнении домашних заданийдолжен, включают краткое изложение работы, которую вы проделали до сих пор для решения проблемы, и описание трудностей, с которыми вы ее решаете (центр помощи, Как спросить).
@ J.Ill StackOverflow работает не так. Пожалуйста, прочтите Как спросить. Если кто-то дает вам полный код, он делает что-то, что обычно не рекомендуется. Вот почему вы получаете ответы только с объяснениями высокого уровня.
(Я отредактировал вопрос, чтобы сделать его менее похожим на запрос на бесплатную работу. Хорошо, если вы сделали что-то из этого - пожалуйста, отредактируйте это в вопросе быстро, чтобы показать, что вы уже выполнили некоторую предыдущую работу. Этот мощь останавливает вопрос Запросы на выполнение домашнего задания, в любом случае, действительно гарантируют, что лицо, задающее вопрос, упускает возможность обучения, и, кроме того, его учебное заведение может принять меры за академическую нечестность).
Не могли бы вы на самом деле удалить сообщение? Поскольку никто, по-видимому, не собирается помогать мне с полным кодом, этот пост просто займет память на вашем веб-хостинге и иногда приведет в ярость некоторых людей, которые наткнутся на этот пост - парень, запрашивающий бесплатную работу, вау . Так что, пожалуйста, примите хотя бы этот запрос и удалите пост. Спасибо
Сообщение не может быть удалено, пока оно открыто, поскольку на него был принят принятый ответ (и я считаю, что даже если вы его отмените, его нельзя будет удалить). Это связано с тем, что после того, как помощник получил признание за свою хорошую работу, было бы несправедливо удалять его с него (что обычно происходит, если вопрос закрыт и удален). Однако он еще может закрыться, и в этом случае его можно будет удалить.
Причина, по которой читатели часто обидчивы к голым запросам на бесплатную работу, заключается в том, что они не уважают время и ценность работы людей, а также просят людей приложить большие усилия, не отвечая вообще.
Чтобы проиллюстрировать этот принцип: я, мог, иду и прошу архитектора показать несколько быстрых чертежей пристройки дома, о которой я думаю, и прошу ее сделать их бесплатно, но это было бы грубо. Я могу либо заплатить ей за ее время, либо попытаться научиться делать рисунки, а затем отправить ей по электронной почте небольшой и конкретный вопрос о них. Она вполне может захотеть сделать последнее, и с радостью, потому что она увидит, что я провел собственное исследование.
Надеюсь, это поможет. В самом деле, должно быть, поскольку мы часто сталкиваемся с подобными вещами здесь, и мы хорошо знаем, как по этому поводу посоветовать.




Итак, вы пытаетесь создать приложение Swing! И вы используете JFileChooser, поэтому нет необходимости проверять, существует ли файл или нет, поскольку вы не увидите файл в открытом окне, которого не существует.
Что касается сортировки файла, вы читаете содержимое файла как буферный поток (возможно построчное чтение) и добавляете строку в TreeSet <Integer>, чтобы сохранялось только уникальное значение (без дублирования). В конце просто запишите данные TreeSet в файл.
Не могли бы вы, если у вас есть время и желание, напишите для меня полный код? Спасибо
Предполагая, что вам нужна помощь, а не полный код:
FileReader ...BufferedReader и его метод readLine()Integer.parseInt() (предположение: в каждой строке по одному числу)TreeSet<Integer> и его метод add().iterator() (того же TreeSet<Integer>)PrintWriterЕсть некоторые пробелы, но чтение документации и проверка соответствующих примеров восполнят их.
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
Ну, в основном я попросил полный код, но я постараюсь сделать это с этой информацией, если мне удастся. Спасибо
AScanner читать файл наверное проще.
@daniu да, конечно, есть варианты.
Что ж, я все еще не мог этого сделать, не могли бы вы, если у вас есть время, напишите мне полный код, если это не будет для вас слишком большим неудобством? Это было бы для меня настоящим спасением, и я буду вечно вам благодарен.
@ J. Сделайте домашнее задание, дорогая мисс / мистер.
Что ж, спасибо тебе! Теперь я ясно вижу путь.
@tevemadar: см. комментарий под вопросом, чтобы увидеть недостатки бесплатной (домашней) работы над Stack Overflow. Автор вопроса хотел бы получить бесплатную работу, а затем удалить вопрос, что приведет к удалению заработанной вами репутации и удалению ответа из вашего профиля Stack Overflow. Хотя вы можете ответить на подобные вопросы, если хотите, стоит понять, почему лучше не делать этого: это может быть пустой тратой вашего времени.
(Действительно, вопрос все еще может быть закрыт, а после этого он может быть удален, что будет иметь такой же эффект).
@halfer Хотя да, я считаю, что 20-25 минут, которые прошли между OP, говоря, что они попытаются, и возвращением, что они не могут этого сделать, слишком коротко, я также нахожу этот учебный план немного странным. Это всего лишь середина семестра (2-й или 3-й месяц, в зависимости от страны), и ожидается, что люди напишут приложение с графическим интерфейсом с помощью Swing, обработки файлов и некоторого умеренно глубокого понимания коллекций?
@halfer Идея удаления OP возникла после того, как они начали подвергаться критике в комментариях, на мой взгляд, это не было их первоначальным намерением.
@tevemadar: возможно, хотя я не уверен в этом. Однако они знали, что это не по теме, и все равно выложили его, так что ... :-)
См.: Как мне задавать домашние задания и отвечать на них?