stringtokenizer и неизвестный тип переменной - PullRequest
1 голос
/ 29 марта 2011

В настоящее время я работаю над проектом, в котором я транслирую текстовый документ и токенизирую его.Единственная проблема заключается в том, что типы в текстовом документе неизвестны, есть ли способ проверить, какой это тип переменной, прежде чем установить ее в переменной в программе?

1 Ответ

2 голосов
/ 29 марта 2011

Нет, поскольку информация о типе не содержится в текстовом потоке. Например, представьте, что токенизер встречает следующий токен:

47

Какой это тип? Это может быть String ("47"), байт, int, long, float или double. Все эти типы могли создать этот токен, поэтому невозможно определить, каким был тип до того, как он был напечатан.

Когда вы анализируете файл, вы должны уже знать, какие типы ожидать, и выдавать ошибку, если она не соответствует.

Класс StringTokenizer возвращает только строки. Если вы ожидаете строки, вы можете просто сохранить их в переменной. Если вы ожидаете другого типа, вы должны разобрать его. Например, если вы читаете строку "47", то вам следует запустить ее через Integer.parseInt . Это либо возвратит int (например, 47), либо выдаст исключение NumberFormatException, если оно не совпадает. Возможно, вы захотите перехватить NumberFormatException и выдать пользователю ошибку, поскольку текстовый файл не соответствует ожидаемому.

...