Нужно заменить буквы в слове на цифры. Одна цифра может хранить в себе до 4 букв. Почему строка не меняется?
centerBut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Scanner scan = new Scanner(System.in);
String fn = JOptionPane.showInputDialog("Введите имя: ");
String fw1 = scan.next();
fn.replace('а', '1');
fn.replace('и', '1');
fn.replace('с', '1');
fn.replace('ъ', '1');
fn.replace('б', '2');
fn.replace('й', '2');
fn.replace('т', '2');
fn.replace('ы', '2');
fn.replace('в', '3');
fn.replace('к', '3');
fn.replace('у', '3');
fn.replace('ь', '3');
fn.replace('г', '4');
fn.replace('л', '4');
fn.replace('ф', '4');
fn.replace('э', '4');
fn.replace('д', '5');
fn.replace('м', '5');
fn.replace('х', '5');
fn.replace('ю', '5');
fn.replace('е', '6');
fn.replace('н', '6');
fn.replace('ц', '6');
fn.replace('я', '6');
fn.replace('ё', '7');
fn.replace('о', '7');
fn.replace('ч', '7');
fn.replace('ж', '8');
fn.replace('п', '8');
fn.replace('ш', '8');
fn.replace('з', '9');
fn.replace('р', '9');
fn.replace('щ', '9');
JOptionPane.showMessageDialog(null, "Ваши числа " + fn, "window", JOptionPane.PLAIN_MESSAGE);
}
});
Метод replace
не меняет исходную строку, а возвращает новую строку. Соответственно, во всех строках кода должно быть так:
fn = fn.replace(...);
Однако создавать при каждой замене новую строку - не лучший подход. Можно проходить по всем символам строки, вычислять замещающий символ и добавлять его в StringBuilder
, после чего создавать строку из StringBuilder
.
Также 33 строки кода на замену - это много дублируемого кода. Стоит попытаться объединить символы в группы с заданными правилами замены. Например, так:
private static char replaceChar(char c)
{
int resultCharCode = c;
if (c >= 1072 && c <= 1077)
{
resultCharCode = c - 1023;
}
else if (c >= 1078 && c <= 1103)
{
resultCharCode = (c - 1071) % 9 + 49;
}
else if (c == 1105)
{
resultCharCode = c - 1050;
}
return (char)resultCharCode;
}
И, в итоге, использование:
String str = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
{
char replacedChar = replaceChar(c);
sb.append(replacedChar);
}
String result = sb.toString();
Вывод на экран str
и result
такой:
абвгдеёжзийклмнопрстуфхцчшщъыьэюя
123456789123456789123456789123456
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Проблема собственно следующая: я реализовал в своём приложении смену языков по нажатию на кнопки в Activity (всё работает корректно), но я решил...
Кто расскажет подробно, что делает данная опция ? Что означает атомарное перемещение ? Я никак не могу найти её объяснения
Как лучше разметить данную структуру по бэм? Все оставить как есть или лучше разбить по блокам вложенные элементы