【问题标题】:Array out of bounds while using string.split使用 string.split 时数组越界
【发布时间】:2017-07-15 04:13:08
【问题描述】:

由于某种我不明白的原因,我在

处得到了一个超出范围的数组

字符串 ans1 = 输入[1]; 此代码的目的是通过将单个输入字符串拆分为多个部分并将它们分别添加到输入和输出数组中,从而将问题和答案添加到 2 个不同的数组中。我知道什么是越界数组,只是不明白为什么 split 不能正常工作。

sl=tf.getText();     
boolean tempsave = false;
if (sl.equalsIgnoreCase("!tempadmin"))
{
int ends = sIndata.length;
int endss = resdata.length;
int endends =0;
int endendss =0;
    ta.append("adding options\n");
    do{
       String sp = tf.getText();
       if (sl.equalsIgnoreCase("kill"))
               {
                   tempsave = true;
               };
        String [] inputs = sp.split(";");
        String qs1 = inputs[0];
        String ans1 = inputs[1];
        String[] qs2= qs1.split(":");
        String[] ans2= ans1.split(":");
        for (int qusilada = 0; qusilada != qs2.length; qusilada++){
        sIndata[ends + 1][endends + qusilada] = qs2[qusilada];
        resdata[endss + 1][endendss + qusilada] = ans2[qusilada];        
                ends++;
                endss++;
       }
                sp = "";
    }while (tempsave == false);
    ta.append("tempadmin closed");
};

【问题讨论】:

标签: java arrays split do-while


【解决方案1】:

在计算索引值之前检查数组长度:

String [] inputs = sp.split(";");
    String qs1 = "";
    String ans1 = "";
    if(inputs.length>1){
       qs1 = inputs[0];
       ans1 = inputs[1];
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多