TransWikia.com

Изменение элемента массива char

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("*");

One Answer

  1. В Вашем массиве chr лежит строковое представление объекта RandomAccessFile, а не строка из файла. Чтобы корректно прочитать из файла можно использовать FileReader и BufferedReader из пакета java.io

         FileReader fr = new FileReader(filename);
         BufferedReader br = new BufferedReader(fr);
    
  2. Для конкатенации строк лучше использовать StringBuilder, при конкатенации через += вы каждую итерацию порождаете новую строку.

         StringBuilder ans = new StringBuilder();
         ans.append(line.charAt(i));
    
  3. В вашем цикле for лучше инициализировать переменную внутри цикла, и итерироваться до x < chr.length, при условии x < chr.length - 1 Вы не проверяете последний символ.

          for (x = 0; x < chr.length; x++) {...}
    
  4. Чтобы присвоить нужное значение стоит написать

          chr[x] = '*';
    

Answered by Kir on January 10, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP