【问题标题】:Divide strings by length of two将字符串除以二的长度
【发布时间】:2016-05-20 23:34:49
【问题描述】:

我是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);

怎么了?

【问题讨论】:

  • i &lt;= first.length()更改为i &lt; first.length() - 1

标签: java string substring


【解决方案1】:

尝试替换这个:

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

使用&lt; 代替&lt;=

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

【讨论】:

  • 谢谢!我知道这很简单。我只是没看到。
【解决方案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 的值总是小于字符串字面量的长度

【讨论】:

  • 尝试纠正第二个:first.lenght() 到 first.length()
猜你喜欢
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
  • 2014-05-08
  • 2017-08-19
  • 2012-11-06
  • 2014-12-15
相关资源
最近更新 更多