首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我得到java.lang.StringIndexOutOfBounds异常?

为什么我得到java.lang.StringIndexOutOfBounds异常?
EN

Stack Overflow用户
提问于 2017-03-26 20:53:35
回答 1查看 94关注 0票数 0

我有一个程序,它是采取两个字符串参数,并根据他们的索引作为整型,并尝试做加法,就像我们做的论文,但我得到了java.lang.StringOutOfBounds异常,我不能解决它任何帮助,感谢提前感谢

代码语言:javascript
复制
import java.util.Arrays;

public class Algorithm {
    boolean flag=false;

    public void topla(String str1,String str2){

        String temp="";
        int sum1=0,sum2=0;

        String sonuc1="";
        if(str2.length()>str1.length()){
            temp=str1;
            str1=str2;
            str2=temp;

        }

         for (int i=0; i<str1.length(); i++)
         {
             sum1 = Integer.parseInt(str1.substring(str1.length()-1-i, 1));
             sum2=0;
             if(str2.length()-i>0){
                 sum2=Integer.parseInt(str2.substring(str2.length()-1-i,1));
             }
             else
                 sum2 = 0;
             sum1 = sum1 + sum2;
             if(flag)
             {
                 sum1 += 1;   
                 flag = false;
             }
             if (sum1 > 9)    
             {
                 flag = true;
                 sum1 -= 10;
             }
             sonuc1 += sum1;
         }
         char[] sonucu_duzelt = sonuc1.toCharArray();
         String string =new String(sonucu_duzelt);
         System.out.println(string);
         }
EN

回答 1

Stack Overflow用户

发布于 2017-03-26 21:09:02

让我们来看看substring方法的实现:

代码语言:javascript
复制
public String substring(int beginIndex, int endIndex) {
    if (beginIndex < 0) {
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    if (endIndex > value.length) {
        throw new StringIndexOutOfBoundsException(endIndex);
    }
    int subLen = endIndex - beginIndex;
    if (subLen < 0) {
        throw new StringIndexOutOfBoundsException(subLen);
    }
    return ((beginIndex == 0) && (endIndex == value.length)) ? this
            : new String(value, beginIndex, subLen);
}

这段代码对你来说很重要:

代码语言:javascript
复制
int subLen = endIndex - beginIndex;
if (subLen < 0) {
    throw new StringIndexOutOfBoundsException(subLen);
}

您必须更改以下行:

代码语言:javascript
复制
Integer.parseInt(str1.substring(str1.length()-1-i, 1));
Integer.parseInt(str2.substring(str2.length()-1-i,1));

str1.length()-1-i不能大于1。当i等于(length - 1)时,str1.length()-1-i等于0。由于0< 1,Jvm抛出了new StringIndexOutOfBoundsException()

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

https://stackoverflow.com/questions/43028964

复制
相关文章

相似问题

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