将字符串除以长度为2

时间:2016-02-10 14:42:58

标签: java string substring

我是java的新手,所以我希望你能帮助我:

我有一个字符串,我试图分成两个元素。我正在尝试使用子字符串,但到目前为止它不起作用。这是我尝试过的:

public class StreamCipher {

     String first = "315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5b403b510d0d0455468aeb98622b137dae857553ccd8883a7bc37520e06e515d22c954eba5025b8cc";

     public void stringToList() {
          List<String> xorList = new ArrayList<String>();
          for (int i = 0; i <= first.length(); i+=2) {
                   String subXOR = first.substring(i, i+2);
                   xorList.add(subXOR);
              }
           }
           System.out.println(xorList);
     }

然而,这个错误不断出现:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 174

在这一行:

String subXOR = first.substring(i, i+2);

有什么问题?

2 个答案:

答案 0 :(得分:2)

尝试替换它:

 for (int i = 0; i <= first.length(); i+=2) {

使用<代替<=

 for (int i = 0; i < first.length(); i+=2) {

答案 1 :(得分:2)

正在查看的问题是,即使i等于字符串长度的长度,也会执行语句first.substring(i, i+2);

所以你应该做的是

public void stringToList() {
          List<String> xorList = new ArrayList<String>();
          for (int i = 0; i <= first.length(); i+=2) {
                   if((i+2)<first.length()){
                   String subXOR = first.substring(i, i+2);
                   xorList.add(subXOR);
                 }
              }
           }
           System.out.println(xorList);
     }

这样你就可以确定i + 2的值总是小于字符串文字的长度