首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.substring和空格

.substring和空格
EN

Stack Overflow用户
提问于 2015-02-06 06:29:25
回答 3查看 859关注 0票数 1

我在Java中玩.substring方法,遇到了一个我不明白的错误。如果我有一个字符串表示一个预测:

代码语言:javascript
复制
String forecast = "Sat, 7 Feb - Snow - -8/-13"

我可以通过调用

代码语言:javascript
复制
int lastWhitespaceIndex = forecast.lastIndexOf(" ");
int highs = Integer.parseInt(forecast.substring(lastWhitespaceIndex + 1));

但是,如果我将第二行更改为

代码语言:javascript
复制
int highs = Integer.parseInt(forecast.substring(lastWhitespaceIndex));

我的程序崩溃了。是否有关于不允许字符串以我不知道的空格开始的规则?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-06 06:32:12

Integer.parseInt()的文档明确指出:

字符串中的字符都必须是十进制数字,但第一个字符可能是ASCII减号'-‘('\u002D')表示负值,或ASCII加符号'+’('\u002B')表示正值。

所以,没有空格可以开始。

票数 1
EN

Stack Overflow用户

发布于 2015-02-06 06:33:24

原因是子字符串将返回-8/-13,而斜杠不是diget,因此这将失败。在斜杠上分头,你就完蛋了。

代码语言:javascript
复制
int lastWhitespaceIndex = forecast.lastIndexOf(" ");
int lastSlashIndex = forecast.lastIndexOf("/");
int highs = Integer.parseInt(forecast.substring(lastWhitespaceIndex + 1, lastSlashIndex));
票数 0
EN

Stack Overflow用户

发布于 2015-02-06 06:33:54

在我的测试中,两种方法都失败了。如果使用Integer.parse(价值),则该值只能包含一个数字。如果没有,你会得到一个NumberFormatException

公共静态int parseInt(String s)抛出NumberFormatException将字符串参数解析为有符号的十进制整数。字符串中的字符都必须是十进制数字,但第一个字符可能是ASCII减号'-‘('\u002D')表示负值,或ASCII加符号'+’('\u002B')表示正值。返回得到的整数值,就好像参数和基数10是作为parseInt(java.lang.String,int)方法的参数一样。 参数:s-包含要解析的int表示的字符串。 返回:以十进制为单位的参数表示的整数值。抛出: NumberFormatException -如果字符串不包含可解析整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28359816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档