Итак, у меня есть два файла .txt, один из которых называется «input.txt», а другой — «output.txt». чтобы создать вывод, мне нужно скопировать текст из ввода, но заменить все пробелы между словами на @ и добавить новую строку со строкой «#NEW_LINE#» после каждой строки исходного текста.
например, если input.txt такой:
the unstoppable marching of time
that is slowly guiding us all towards
an inevitable death
тогда output.txt должен быть примерно таким:
the@unstoppable@marching@of@time
#NEW_LINE#
that@is@slowly@guiding@us@all@towards
#NEW_LINE#
an@inevitable@death
#NEW_LINE#
в любом случае вы поняли идею.
теперь у меня нет проблем с этой конкретной задачей, но затем меня также просят вывести на экран сообщение, показывающее общее количество строк текста из обоих файлов, и другое, которое печатает общее количество @ из вывода .текст. и хотя у меня нет проблем с подсчетом строк, их номера отображаются правильно, но у меня есть проблемы с определением @... плохо объясню.
вот часть кода, который я попробовал сначала: [кстати, все это происходит в одном классе, без каких-либо других методов, кроме основного, конечно. я думал, что так будет проще, idk ????♂️????]
File fsrc=new File("input.txt");
File fdes=new File("output.txt");
int atCount = 0; //number of @'s
int lineCountIN=0; //number of input's lines
int lineCountOUT=0; //number of output's lines
FileReader fr = new FileReader(fsrc);
BufferedReader br =new BufferedReader(fr);
FileWriter fw = new FileWriter(fdes);
String s = null;
while((s=br.readLine())!=null)
{
if ((s.equals(" "))) {
fw.write(s.replace(" ","@"));
atCount++; }
else fw.write(s);
fw.write("\n");
lineCountOUT++;
lineCountIN++;
fw.write("#NEW_LINE#");
fw.write("\n");
lineCountOUT++;
fw.flush();
}
fw.close();
[...]
System.out.println("Total instances of @ characters at output.txt: " + atCount);
сообщение, которое появляется на экране, всегда будет таким: «Всего вхождения символов @ в output.txt: 0».
позже я изменил блок if-else на блок do-while:
do {
fw.write(s.replace(" ","@"));
atCount++; }
while ((s.equals(" ")));
но тогда сообщение не возвращает точное количество @, на самом деле число, которое оно показывает, по какой-то причине просто равно lineCountIN (например, для файла input.txt с 3 строками, окончательное сообщение это: "Всего экземпляров символов @ в output.txt: 3")
так что да, это в значительной степени это lmao, я думаю, что я неправильно использую atCount?? любая помощь может быть оценена ‹3
(s.equals(" "))
-> Вы проверяете, равна ли вся строка пробелу. Вы должны найти пробелы внутриs
- person Olivier Depriester   schedule 28.04.2020fw.write(s.replace(" ", "@"));
, а затем:for(int i=0; i<s.length();i++){if(s.charAt(i) == '@') atCount++; }
, но это все равно не работает, там написано, что 0 @!! - person   schedule 28.04.2020