Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280

Не получается: Создать программой .txt и написать несколько строк, поменять в нем 2 строку на другую, в 3 строке

16.11.2018, 15:38. Показов 5615. Ответов 61
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла серьезная проблема при создании кода для лабораторной работы:
Суть работы такова:

Создать программой .txt и написать несколько строк в файл вручную через консоль,
Поменять в нем 2 строку на другую, поменять в 3 строке второе слово (все без перезаписи файла)

потом работа с двоичным файлом: поменять 2 байта в двоичном файле.

Main.java:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        //подсказки для ДЗ: для реализации ввести в поиск java get text from conslote to string и java how write text to file
 
        // создадим новый файл
        File newFile = new File("F://Dir.txt");
        try
        {
            boolean created = newFile.createNewFile();
            if(created)
                System.out.println("File has been created");
        }
        catch(IOException ex){
 
            System.out.println(ex.getMessage());
        }
        //чтение с консоли через Scanner:
        String cls0;
        String cls1;
 
        Scanner in = new Scanner(System.in);
        System.out.println("Enter a string");
        cls0 = in.nextLine();
 
        System.out.println("Enter a string");
        cls1 = in.nextLine();
    }
}
CreateNewFile.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.io.File;
import java.io.IOException;
 
public class CreateNewFile {
 
    //В этом классе представлены способы создания файла в Java
    public static void main(String[] args) throws IOException {
        // получаем разделитель пути в текущей операционной системе
        String fileSeparator = System.getProperty("file.separator");
 
        //создаем абсолютный путь к файлу
        String absoluteFilePath = fileSeparator + "Users" + fileSeparator + "prologistic" + fileSeparator + "file.txt";
 
        File file = new File(absoluteFilePath);
        if (file.createNewFile()) {
            System.out.println(absoluteFilePath + " Файл создан");
        } else {
            System.out.println("Файл " + absoluteFilePath + " уже существует");
 
 
            //создаем файл с указанием относительного пути к файлу
            String relativePath = "tmp" + fileSeparator + "file.txt";
            file = new File(relativePath);
            if (file.createNewFile()) {
                System.out.println(relativePath + " файл создан в корневой директории проекта");
            } else System.out.println("Файл " + relativePath + " уже существует в директории проекта");
        }
 
    }
}
В итоге из этапов только происходит создание файла по адресу и никакие вводимые через консоль три строки там не пишутся.
Кто сможет сделать это как можно рациональнее и короче, заранее благодарю.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2018, 15:38
Ответы с готовыми решениями:

Не получается вставить несколько строк из одной таблицы в другую
Добрый день. Нужно вставить в таблицу oc_product_to_category в столбцы category_id, main_category, product_id значения ...

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

Создать текстовый файл in.txt, куда записать несколько строк. Найти номер самой короткой строки
1.Создать текстовый файл in.txt, куда записать несколько строк. Найти номер самой короткой строки. Буду благодарен ..

61
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 17:53
Студворк — интернет-сервис помощи студентам
тек вторую на третью а на вторую че ставить "долбаный учитель задолбал со сваими уроками:?"
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 17:59  [ТС]
DimaxDe, ну не задолбал, а просто дает мало практики в отличие от программирования на С++ и C# на двух прошлых семестрах, где у нас стоял все-же преподаватель, а не практикант, и сюда мне лазить почти не приходилось даже, хоть я по этим языкам был середнячок, но все же очень хорошо написал на экзамене программы на бумаге благодаря тому, что преподаватель всех часто подправлял и подсказывал и давал контрольные на бумаге, из-за чего какая-никакая практика была. Просто тот, кто у нас стоит сейчас, совершенно не осведомлен, у кого опыта побольше, у кого поменьше(как у меня например)
Вторую строку поменять на другую, я думаю да, можно и на третью поменять вполне.
В третьей строке по условию задачи нужно поменять второе слово на не важно какое другое.
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 18:18
тогда делаем так
Java
1
2
3
4
5
String ok=new String("долбаный учитель задолбал со сваими уроками:?");
String clsBlank=new String(" ");
// патом запись в самом конце 
String clsBlank=new String(" ");
fw.write(cls0);fw.write(ok);fw.write(cls1.replace(cls1.substring(cls1.indexOf(clsBlank,1),cls.indexOf(clsBlank,cls.indexOf(clsBlank)+1),"******"));
накалякал..ну потэстить пойдет

Добавлено через 3 минуты
но там над регулярные экпрессы полюбому..попробуй посмотри сам

Добавлено через 7 минут
там 2 места в названии цлс 1 забыл
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 18:19  [ТС]
DimaxDe, вроде бы все должно быть хорошо, но вот второй clsBlank подчеркивается красным и пишет:
Variable 'clsBlank' is already defined in the scope - Переменная 'clsBlank' уже определена в области.

И кстати, за что отвечают cls без цифр, которым нужно задать цифру, что они обозначают, что в clsN происходит замена строки на другую или что-то другое или еще?
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 18:26
Java
1
2
3
4
5
6
7
8
String ok=new String("долбаный учитель задолбал со сваими уроками:?");
 
// патом запись в самом конце 
String clsBlank=new String(" ");
fw.write(cls0);fw.write(ok);fw.write(cls1.replace(cls1.substring
(cls1.indexOf(clsBlank,1),cls1.indexOf(clsBlank,cls1.indexOf(clsBlank)+1),//ето меняем
"******"));//на ето
fw.close();in.close();
подправил немного

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

кароче ищем слово между 1 и 2 пробелами и молимся чтобы ето было второе слово)))
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 18:28  [ТС]
DimaxDe, поставил единицы к cls и сделал орфографию как сверху(также обнаружил отсутствие третьей скобки)-так теперь вообще весь вот этот фрагмент:

(cls1.indexOf(clsBlank,1),cls1.indexOf(c lsBlank,cls1.indexOf(clsBlank)+1),
"******"))); сплошь подчеркивается красной волной.

Выдает:
Cannot resolve method 'substring(int, int, java.lang.String)'
Невозможно разрешить метод substring (int, int, java.lang.String) '
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 18:31
скобка гдето убежала)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.11.2018, 18:34
Лучший ответ Сообщение было отмечено Jim Reinor как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package ru.ismoke;
 
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Cyber {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = "";
        String blankString = "долбаный учитель задолбал со сваими уроками";
        String blankWord = "заменилинаэтослово";
        List<String> lines = new ArrayList<>();
 
        System.out.println("Для выхода, введи 'q'");
 
        while (!"q".equals(s)) {
            System.out.print("Input line: ");
            s = scanner.nextLine();
            lines.add(s);
        }
        lines.remove("q");
        
        lines.set(1, blankString);
        String[] words = lines.get(2).split(" ");
        if (words.length > 1) words[1] = blankWord;
        lines.set(2, String.join(" ", words));
 
        try (FileWriter writer = new FileWriter(new File("D:/test.txt"))) {
            for (String line : lines) {
                writer.write(line + System.lineSeparator());
            }
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
2
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 18:37
Java
1
2
fw.write(cls1.replace(cls1.substring
     (cls1.indexOf(clsBlank,1),cls1.indexOf(clsBlank,cls1.indexOf(clsBlank)+1)),"******"));
так проверь
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 18:38  [ТС]
DimaxDe, так намного лучше, но исключение только выдает

Exception in thread "main" java.lang.StringIndexOutOfBoundsExceptio n: String index out of range: -1
at java.lang.String.substring(String.java:1 960)
at Main.main(Main.java:49)

Нужно что-то еще приписать, дабы такого не было

iSmokeJC, да, хороший вариант ответа, тоже вариант. Пока я попробую другим способом доработать.
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 18:53
Java
1
2
3
int idx=cls1.indexOf(clsBlank);
     fw.write(cls1.replace(cls1.substring
     (cls1.indexOf(clsBlank,1),cls1.indexOf(clsBlank,idx+1)),"******"));
попробуй..если нет то походу так непойдет..воспользуйся вариантом от iSmokeJC он проффесиональнее и работает..
извини если неуспели добить..мне уходить надо..
1
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 19:13  [ТС]
DimaxDe, жаль, но и тут не проехало, может еще бы и сам пофиксить попробую. Вариант от iSmokeJC просто комментируется не очень хорошо и могут подумать, что автор такого убер-кода это не я. Оффлайн уже на сегодня окончательный? Если да, то я не буду терять время и попробую подумать.

Добавлено через 15 минут
iSmokeJC, DimaxDe, спасибо за отсутствие равнодушия к моей проблеме, вы мне очень сильно помогли с заданием.
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 20:38
Java
1
fw.write(cls1.replace("^\w\s","******"));
так канешно проще всего ..ток незнаю правильно нет..не силен в регулярках
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 20:48  [ТС]
DimaxDe, попробовал заменить fw.write и этот участок "^\w\s" подчеркивается красной волной Illegal escape character in string literal-судя по всему, неподдерживаемые символы

А фикс предыдущего варианта вероятно заключается в том, что чего то не хватает, вероятно строка была слишком длинной для приема строки
Исключение в потоке «main» java.lang.StringIndexOutOfBoundsExceptio n: индекс строки за пределами диапазона: -1
в java.lang.String.substring (String.java:1960)
на Main.main (Main.java:50)
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 20:58
Java
1
fw.write(cls1.replace("\^\\w\\s","******"));
мож так..надо выбрать помощ зала или звонок другу кто в експрессах шарит
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 21:09  [ТС]
DimaxDe, то же самое получилось, но как мне кажется, лучше уж был предыдущий вариант и найти способ его пофиксить на исключение, если это осуществимо.
Если бы не исключение, то программа бы идеально завершила работу

Exception in thread "main" java.lang.StringIndexOutOfBoundsExceptio n: String index out of range: -1
at java.lang.String.substring(String.java:1 960)
at Main.main(Main.java:49)

Исключение в потоке «main» java.lang.StringIndexOutOfBoundsExceptio n: индекс строки за пределами диапазона: -1
в java.lang.String.substring (String.java:1960)
на Main.main (Main.java:50)


Java
1
2
fw.write(cls1.replace(cls1.substring
                    (cls1.indexOf(clsBlank,1),cls1.indexOf(clsBlank,idx+1)),"******"));
Добавлено через 4 минуты
DimaxDe, Благодарю за оказанную помощь, но у меня уже ночь и я возьму вариант от iSmokeJC, у меня не осталось времени, потому что еще нужно сделать дополнительно функцию превращения txt файла в двоичный и поменять в нем 2 байта.
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 21:12
fw.write(cls1.replace(cls1.substring
(cls1.indexOf(clsBlank),cls1.indexOf(cls Blank,(idx+1))),"******"));
незнаю
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 21:27  [ТС]
DimaxDe, благодарю, но я использовал другой вариант, мне бы самое основное-сейчас сделать функцию превращения txt в двоичный файл со сменой в нем 2 байтов. Желательно, чтобы была в консоле скажем при нажатии любой кнопки
0
541 / 352 / 194
Регистрация: 07.11.2018
Сообщений: 1,243
16.11.2018, 21:29
непонял..тебе JFrame нужен с бутонами на которых листенеры висят?
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
16.11.2018, 21:58  [ТС]
DimaxDe, нет, мне надо чтобы в консоли при определенной кнопке нажать и превратить txt в двоичный файл со сменой в нем 2 байтов и все

Добавлено через 19 минут
А можно и просто создать двоичный файл и поменять в нем 2 байта файла
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2018, 21:58

Как в txt в каждую строку перед первым словом в строке написать слово mod?
как в txt в каждую строку перед первым словом в строке написать слово mod? пустых строк нет

Считать с файла (input.txt) строку, заменить в строке латинские буквы на русские, записать файл (input.txt) эту строку
Считать с файла (input.txt) строку, заменить в строке латинские буквы на русские, записать файл (input.txt) эту строку.

Отсортировать N-ую строку файла fin.txt по возрастанию длин слов в строке и записать ее в fout.txt
не могу понять c++ , поможет кто разобраться? на паскале всё получается, а сейчас решил C++ изучить Вот задачка: В текстовом файле...

Как создать файл *txt в папке с программой
Помогите пожалуйсто ,как создать файл *txt?В той-же папке,в которой хранится программа.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru