.подстрока и пробел, Java

1

Я играл с методом.substring в Java и сталкивался с ошибкой, которую я не понимаю. Если у меня есть строка, представляющая прогноз:

String forecast = "Sat, 7 Feb - Snow - -8/-13"

Я могу выделить данные о температуре, позвонив

int lastWhitespaceIndex = forecast.lastIndexOf(" ");
int highs = Integer.parseInt(forecast.substring(lastWhitespaceIndex + 1));

Однако, если я изменю вторую строку на

int highs = Integer.parseInt(forecast.substring(lastWhitespaceIndex));

Моя программа вылетает. Есть ли правило о том, что нельзя начинать с строки с пробелами, о которых я не знаю?

Теги:
string
substring

3 ответа

1
Лучший ответ

В документации Integer.parseInt() четко указано:

Символы в строке должны быть десятичными цифрами, за исключением того, что первым символом может быть знак минус ASCII "-" ("\ u002D"), чтобы указать отрицательное значение или знак ASCII плюс "+" ("\ u002B") для указания положительного значения.

Итак, никаких пробелов для начала.

0

Причина в том, что подстрока вернет -8 / -13 и что косая черта не является diget, поэтому это не сработает. Разделите его на косую черту, и все готово.

int lastWhitespaceIndex = forecast.lastIndexOf(" ");
int lastSlashIndex = forecast.lastIndexOf("/");
int highs = Integer.parseInt(forecast.substring(lastWhitespaceIndex + 1, lastSlashIndex));
0

В моем тесте оба подхода не сработали. Если вы используете Integer.parse (значение), значение может содержать только число. Если нет, вы получаете NumberFormatException.

public static int parseInt (String s) throws NumberFormatException Разбирает строковый аргумент в виде десятичного целого числа со знаком. Символы в строке должны быть десятичными цифрами, за исключением того, что первым символом может быть знак минус ASCII "-" ("\ u002D"), чтобы указать отрицательное значение или знак ASCII плюс "+" ("\ u002B") для указания положительного значения. Полученное целочисленное значение возвращается точно так же, как если бы аргумент и radix 10 были указаны как аргументы метода parseInt (java.lang.String, int).

Параметры: s - строка, содержащая представление int, подлежащее анализу

Возвращает: целочисленное значение, представленное аргументом в десятичном значении. Throws: NumberFormatException - если строка не содержит синтаксическое целое число.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню