【问题标题】:String array and string字符串数组和字符串
【发布时间】:2013-12-25 20:03:04
【问题描述】:

我正在为我的班级开发一个程序,但现在我遇到了拆分字符串和子字符串的问题。我已将来自不同类的数据保存在带有分隔符的字符串中,以供以后拆分(/)使用。这部分工作正常,我得到了所有字符串,因为我应该保存在一个新的字符串数组中。

后来我尝试在一个 for 循环(字符串单词:字符串数组)中烤它们,一切看起来都很好。但是我在从 word 中剪切子字符串时遇到问题。我想得到数字(在“-”和“k”之间),但它总是抛出一个字符串超出索引错误,我不知道为什么。当我尝试烘烤我想要获取子字符串的字符串的位置时,它显示它们很好,但是当我尝试使用它们进行子字符串时,它再次引发错误。

错误

"java.lang.RuntimeException: 无法启动活动 组件信息{com.example.uiuracun/com.example.uiuracun.Bill}: java.lang.StringIndexOutOfBoundsException:长度=29;区域开始=22; 区域长度=-18"

守则

package com.example.uiuracun;

import android.R.anim;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Bill extends ListActivity {

    // Removed extra code

    private void split(String[] string) {
        for (String word:string){
            word.trim();
            int start = 0;
            int end = 0;
            start = word.indexOf('-');
            end = word.indexOf('k');
            String c = word.substring(start, end);


            }
        }
    }

【问题讨论】:

  • 你能给出一个输入输出样本吗?
  • 你的字符串看起来像包含-k,你可以创建一个SSCCE你不需要的帖子代码,你的问题似乎在你的方法split,那里有很多噪音。
  • start 加一,end 减一
  • @AniruddhaSarkar,你说对了一半。 start 应该增加,但 endIndex 是独占的(所以很好)。 docs.oracle.com/javase/7/docs/api/java/lang/…, int)

标签: java android string split arrays


【解决方案1】:

您的错误消息包括length=29; regionStart=22; regionLength=-18 注意长度为负数。

这让我相信k 字符出现在- 字符之前。由于您的代码假定 - 始终排在第一位,因此您得到的 end 小于 start

【讨论】:

    【解决方案2】:

    这里有一些信息可以帮助您解决该异常。

    来自Java docs

    IndexOutOfBoundsException - 如果 beginIndex 为负数,或者 endIndex 大于此 String 对象的长度,或 beginIndex 为 大于 endIndex。

    更新

    我认为你应该试试这个:

    start = word.indexOf('-');
    
    // tell it to start looking for the 'k' starting from the index
    // of the '-' that was found.
    end = word.indexOf('k', start);
    
    String c = word.substring(start, end);
    

    【讨论】:

    • 是的,我想通了...谢谢,我真的很感激
    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2022-08-14
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多