заменить не заменить цифры - PullRequest
       5

заменить не заменить цифры

0 голосов
/ 03 февраля 2011

Я хочу заменить в строке каждое '0' на 'F', каждое '1' на 'E' и т. Д.

Например, «234567890ABCDEF» должно привести к «DCBA9876543210»

            final char[] items = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        for (int i = 0; i < 16; i++) {
            newString = oldString.replace(items[i], items[15-i]);
        }

к сожалению, этот кусок кода не работает.Он заменяет все буквы, но не цифры.Любые предложения, почему?Я действительно в растерянности ...

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

Ваша проблема в том, что вы заменяете цифры на буквы для i = от 0 до 7 и обратно для i = от 8 до 15.

0 голосов
/ 03 февраля 2011

Если вы добавите отладку в свой код и посмотрите на итерации, вы заметите, как вы перезаписываете результаты первых итераций с помощью replace () es последних итераций:

234567890ABCDEF
23456789FABCDEF
23456789FABCDEF
D3456789FABCDEF
DC456789FABCDEF
DCB56789FABCDEF
DCBA6789FABCDEF
DCBA9789FABCDEF
DCBA9889FABCDEF
DCBA9779FABCDEF
DCBA6776FABCDEF
DCB56776F5BCDEF
DC456776F54CDEF
D3456776F543DEF
23456776F5432EF
23456776F54321F
234567760543210
0 голосов
/ 03 февраля 2011

Это потому, что вы инвертируете результат, полученный во время первых восьми замен, во второй замене!Это означало, что

0-7 конвертируется обратно в 0-7, но 8 и 9 будут конвертированы в их аналоги!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...