当前位置: 首页 > 知识库问答 >
问题:

为什么我在这个substring方法中得到StringIndexOutOfBoundsException错误?

潘刚洁
2023-03-14
protected Void doInBackground(Void... voids) {

...

ABV = elem.select("td > span.muted").text();
Log.d("myLOG_ABV", ABV);
Log.d("myLOG_ABVlength", String.valueOf(ABV.length()));

/*String temp_ABV = ABV.substring(ABV.length()-6, ABV.length());*/

... }

然后,我创建了注释代码。

...

ABV = elem.select("td > span.muted").text();
Log.d("myLOG_ABV", ABV);
Log.d("myLOG_ABVlength", String.valueOf(ABV.length()));

***String temp_ABV = ABV.substring(ABV.length()-6, ABV.length());***

...

结果

原因:java.lang.StringIndexOutOfBoundsException:长度=0;指数=-6

说真的,我和这个代码斗争了7小时30分钟。

共有1个答案

桂志新
2023-03-14

所以我们有:

***String temp_ABV = ABV.substring(ABV.length()-6, ABV.length());***

Caused by: java.lang.StringIndexOutOfBoundsException: length=0; index=-6

在这种情况下怎么能得到-6的指数呢?abv长度必须为零,即“”

可能是abv至少应该有六个字符,但这表示其他地方有bug。

首先,验证您的输入。

在你通常想要的地方,比如:

if (abv.length() < 6) {
    throw new IllegalArgumentException("...");
}

接下来,查找该值的来源并修复错误。

int abvLen = abv.length();
int abvEndIndex = abvLen - 6;
if (abvEndIndex < 0) {
    log.error("ABV length less than 6", abv);
    abvEndIndex = 0;
}
String abvEnd = abv.substring(abvEndIndex, abvLen);
 类似资料:
  • {“error”:“invalid_scope”,“error_description”:“AADSTS70011:为输入参数”scope“提供的值无效。作用域 https://graph.microsoft.com/User.Read https://graph.microsoft.com/User.ReadWrite https://graph.microsoft.com/User.ReadB

  • 我是Python的初学者。我合并了两个之后,我试图用另一个列值更改一个列的'未分配'值。我不能那样做。如果我使用,那么我可以更改。 我从页面上抓取了一个表,然后修改了数据框中的数据。 pip安装lxml 这是我使用的代码。 我希望将邻域值更改为自治区值。 我得到了这个错误。 KeyError回溯(最近一次调用上次)/usr/local/lib/python3。6/数据包/熊猫/核心/索引/基础。p

  • 测试代码为: 测试代码为: 你知道怎么了吗?

  • 我遇到JSON解析错误。我的代码如下: 我从我的检查中得到以下错误: 由于:com,无法分析JSON。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN\u对象,但在第1行第2列为BEGIN\u数组 对于我试图读取的JSON,如果成功,我的应该返回5。 我做错了什么?

  • 我试图解决这个问题:第三个最大数量 但我犯了这个错误 第4行:Char 37:运行时错误:有符号整数溢出:-9223372036854775808-10不能在类型“long long”(solution.cpp)摘要中表示:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:13:37 这是我的代码 有人能告诉我这个错误到底意