В настоящее время я работаю над проектом, в котором я транслирую текстовый документ и размечаю его. Единственная проблема в том, что типы в текстовом документе неизвестны, есть ли способ проверить, какой это тип переменной, прежде чем я установлю ее в переменную в программе?
1 ответ
Нет, поскольку информация о типе не содержится в текстовом потоке. Например, представьте, что токенизатор встречает следующий токен:
47
Какой у этого тип? Это может быть String ("47"
), byte, int, long, float или double. Все эти типы могли создать этот токен, поэтому невозможно сказать, какой тип был до того, как он был напечатан.
Когда вы анализируете файл, вы уже должны знать, какие типы ожидать, и выдавать ошибку, если они не совпадают.
Класс StringTokenizer возвращает вам только строки. Если вы ожидаете строк, вы можете просто сохранить их в переменную. Если вы ожидаете другой тип, вы должны проанализировать его. Например, если вы прочитали строку "47"
, вам следует запустить ее через Integer.parseInt. Это либо вернет целое число (например, 47
), либо вызовет исключение NumberFormatException, если оно не соответствует. Вы можете захотеть поймать NumberFormatException и сообщить пользователю об ошибке, поскольку текстовый файл не соответствует тому, что вы ожидали.
hasMoreTokens
просто сообщает, остались ли еще слова до конца строки.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.