небольшая проблема Java - PullRequest
0 голосов
/ 15 января 2010

Извините, если мой вопрос звучит глупо. Но иногда маленькие вещи создают большую проблему для вас и занимают все ваше время, чтобы ее решить. Но благодаря stackoverflow, где я могу получить советы GURU. :)

Итак, вот моя проблема. я ищу слово в строке и ставлю 0, где это слово встречается. Например: поисковое слово DOG, и у меня есть строка «никогда не позволяйте собаке кусать вас», поэтому строка будет 000100. Теперь, когда я пытаюсь преобразовать эту строку в INT, это приводит к результату 100 :(, что плохо. Я также не могу использовать массив int, я могу использовать только строку, как я конкатенирую, также используя где-то еще в программе.

Теперь я уверен, что вам интересно, почему я хочу преобразовать его в INT. Так что вот мой ответ. Я использую 3 слова из каждой строки, чтобы сделать этот вид двоичной строки. Допустим, я использовал три поисковых запроса, например (собака, собака, когда-либо), поэтому все три строки будут 000100 000100 010000 Затем я хочу СУММАТЬ им, что это должно привести к результату, подобному этому "010200", в то время как это даст результат "10200", что неверно. :(

Заранее спасибо

Ответы [ 4 ]

5 голосов
/ 15 января 2010

Конечно, представление int не будет содержать ведущих нулей. Но вы можете легко преобразовать обратно в строку после суммирования и дополнить нулями слева - просто сохраните максимальную длину любой строки (при условии, что они могут иметь различную длину). Или, если вы хотите стать еще более любопытным, вы можете использовать NumberFormat , но для вас это может оказаться излишним.

Кроме того, будьте осторожны - вы получите некоторые неожиданные результаты с этим кодом, если какое-либо слово появится в 10 или более строках.

3 голосов
/ 15 января 2010

Похоже, вы захотите исследовать java.util.BitSet .

1 голос
/ 15 января 2010

Вы можете добавить к вашему значению префикс «1», который сохранит ваши ведущие 0. Затем вы можете принять этот префикс, чтобы сделать сумму в конце.

Все предполагает, что вы работаете над проблемой переполнения в 10, упомянутой в другом комментарии.

0 голосов
/ 15 января 2010

Не могли бы вы вместо этого сохранить его как массив символов? Вы используете int, что нормально, но вы действительно не хотите int - вы хотите, чтобы каждая позиция в int представляла слова в строке, и вы включаете или выключаете их (1 или 0). Похоже, хранение их в массиве символов имело бы больше смысла.

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