Исключение в потоке "main" java.lang.StringIndexOutOfBoundsException: индекс строки вне диапазона: -1 - PullRequest
2 голосов
/ 04 февраля 2011
 public static String s1 = "team A won the match historically to clinch series which made surprise around the world ";
 public static String s2 = "He did his part";

 t1=s1.length();
 t2=s2.length();
 t3=Math.abs(t1-t2); 

  for(i=0;i<t3;i++)
  {
      Sub_string.add(s1.substring(i,t2++));
  }

Как я могу решить эту проблему?

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

Код, полученный из вашего псевдокода, с предоставленными вами входными строками не будет генерировать никаких исключений.

Отправленное вами исключение (StringIndexOutOfBoundsException: String index вне диапазона: -1) генерируется, когда подстрока вызывается с beginIndex (в вашем случае i ) больше, чем endIndex (в вашем случае t2 ).

Вы также получите исключение StringIndexOutOfBoundsException при вызове вашего кода с s1 , который короче s2 .

1 голос
/ 04 февраля 2011

Следующий код будет служить вашей цели ... не проблема.Печатает сумму как 73 и дизайнерский вывод ..;) Надеюсь, что это полезно !!!!

import java.util.ArrayList;
public class Trial {
    public static String s1 = "team A won the match historically to clinch series which made surprise around the world ";
     public static String s2 = "He did his part";

    public static void main(String[] args) {

         ArrayList<String> Sub_string = new ArrayList<String>();  

        int t1=s1.length();
        int t2=s2.length();
        int t3=Math.abs(t1-t2); 

        try {
            for(int i=0;i<t3;i++)
                  Sub_string.add(s1.substring(i,t2++));

        Object ia[] = Sub_string.toArray();
        for(int i=0; i<ia.length; i++)
            System.out.println(ia[i]);

        } catch (Exception e) {
            System.err.println();

        }

    }

}
1 голос
/ 04 февраля 2011

попробовал. не похоже на исключение

Полагаю, вы определили, что ваш список имеет максимальный размер? если вы определите это так, оно будет работать.

public class TestCode {
    public static String s1 = "team A won the match historically to clinch series which made surprise around the world ";
     public static String s2 = "He did his part";
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         ArrayList<String> Sub_string = new ArrayList<String>();  

        int t1=s1.length();
        int t2=s2.length();
        int t3=Math.abs(t1-t2); 


        try {
            for(int i=0;i<t3;i++)
              {
                  Sub_string.add(s1.substring(i,t2++));
              }
        } catch (Exception e) {
            System.err.println();

        }

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...