Stack Overflow на русском Asked by Eugene_Venev on January 10, 2021
Задача – в поступающей строке заменить каждый 10й символ звездочкой *
.
Удаляемые символы конкатенировать в строку ответа.
Например, при содержимом файла:
0123456789012345678A012345678B01
новое содержимое должно быть
012345678*012345678*012345678*01
и метод должен вернуть 9AB
public String setStars(String filename) {
char[] newChr = new char[10];
String newStr = "";
String ansStr = "";
int x = 0;
try {
RandomAccessFile file = new RandomAccessFile(filename, "rw");
char[] chr = String.valueOf(file).toCharArray();
for (x = x; x < chr.length - 1; x++) {
if (x % 10 == 9) {
ansStr = ansStr + chr[x];
chr[x] = char("*");
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
return ansStr;
}
Вопрос: как присвоить символ элементу массива?
chr[x] = char("*");
В Вашем массиве chr лежит строковое представление объекта RandomAccessFile, а не строка из файла. Чтобы корректно прочитать из файла можно использовать FileReader и BufferedReader из пакета java.io
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
Для конкатенации строк лучше использовать StringBuilder, при конкатенации через += вы каждую итерацию порождаете новую строку.
StringBuilder ans = new StringBuilder();
ans.append(line.charAt(i));
В вашем цикле for лучше инициализировать переменную внутри цикла, и итерироваться до x < chr.length, при условии x < chr.length - 1 Вы не проверяете последний символ.
for (x = 0; x < chr.length; x++) {...}
Чтобы присвоить нужное значение стоит написать
chr[x] = '*';
Answered by Kir on January 10, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP