错误:线程中的异常" main" java.lang.StringIndexOutOfBoundsException

时间:2015-03-11 14:56:56

标签: java string exception

这是代码。 我想做一个计算,可以添加用户输入的单行数。

package demo;
import java.util.Scanner;

public class Demo { 
public static void main(String[] args) {
    Scanner cin=new Scanner(System.in);
   int num[]=new int[10];
    String input;
    input=cin.nextLine();
    int a=0,length=input.length();
    for(int r=0;r<10;r++){ 
        for(int b=a;b<=length;b++){ char char_at=input.charAt(b);
         if(char_at=='+'){String xxx=input.substring(a,b);
         int q=Integer.parseInt(xxx);
         num[r]=q;
         a=b;
         }
       }}
    int sum=0; 
    for(int j=0;j<=10;j++){sum=sum+num[j];}
    System.out.println("sum="+sum);
    }}

2 个答案:

答案 0 :(得分:1)

你有这些问题

  1. 始终假设您要添加10个数字
  2. 不更改r的值以添加新号码
  3. 从不添加最后一个号码
  4. 这可以解决您的问题(最多可添加10个数字):

    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        int num[]=new int[10];
        String input;
        input=cin.nextLine();
    
        int a=0,length=input.length();
    
        int r=0;
        for(int b=a;b<length;b++)
        {
            char char_at=input.charAt(b);
            if(char_at=='+')
            {
                String xxx=input.substring(a,b);
                int q=Integer.parseInt(xxx);
                num[r++]=q;
                a=b;
            }
        }
        String xxx=input.substring(a,length);
        int q=Integer.parseInt(xxx);
        num[r]=q;
    
        int sum=0; 
        for(int j=0;j<=r;j++)
            sum=sum+num[j];
        System.out.println("sum="+sum);
    }
    

答案 1 :(得分:0)

由于Java中的 索引 0 Based

因此,如果String的长度为10,那么您实际上正在访问第11个索引,这就是此异常即将到来的原因

所以替换此

for(int b=a;b<=length;b++){

用这个

for(int b=a;b<length;b++){