Я работаю над программой, в которой пользовательский ввод представляет собой массив смешанных строк и целых чисел. Для примера:Решение целых чисел и строк в Java
собаки 10 23 кошки лягушки 22 слон
Я должен отсортировать этот массив, не изменяя тип каждого индекса. Таким образом, выход будет;
кошка 10 22 собаки слон 23 лягушка
После прочтения строки из консоли, я использую строку Tokenizer пройти через каждый элемент. После этого я пытаюсь parseInt, и если он генерирует исключение, я предполагаю, что это строка, иначе это Integer. Есть ли лучший способ выяснить, является ли токен численным или нет?
спасибо.
+1 О том, чтобы не полагаться на исключения в нормальном потоке программы. @Mehmet: Если вы хотите разрешить отрицательные числа, введите '-?' После '^' в начале регулярного выражения (что означает «ноль или один символ' - »). –
Я не согласен. Исключения выполняются медленно, но не оптимизируются, пока вам не понадобится. Я бы написал частный статический метод 'isNumber' и использовал реализацию try/parseInt/catch для его реализации. Достаточно легко обменивать его, если он слишком медленный. –
@ KeithRandall: Это не оптимизация. Если вы собираетесь писать 'isNumber', почему бы не написать его правильно в первую очередь? Если бы была какая-то значительная работа, абсолютно, не оптимизируйте преждевременно, хотя я бы очень * использовал исключения из более чем 50% обычного потока программ (на примеры из OP). Но здесь просто нет. –