它有效,但我仍然收到错误信息,我做错了什么?

时间:2016-02-28 02:01:47

标签: java

我的老师要我们拿一个被估算的字符串并取一定的增量并按这些增量拉出字符。我有它的工作,但我仍然收到此错误消息:

java.lang.StringIndexOutOfBoundsException: String index out of range: 21

然后它突出显示代码行point = base.charAt(sum): 这是我的整个代码,以便您可以看到我在做什么。

 import java.util.*;
 public class EveryOtherCharacter {
 public static void main(String[]args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter a String: ");
    String base = input.nextLine();
    System.out.print("Enter an increment: ");
    int index = input.nextInt();
    int a = base.length();
    int sum = 0;
    char point;
    if(index>a) {
        System.out.println("Invalid increment: "+index);
    }
    else {
        while (index<=a) {
        sum+=index;
        point = base.charAt(sum);
        System.out.print(point);
   }
   System.out.println();
   }
  }
 }

1 个答案:

答案 0 :(得分:1)

首先,while循环的条件应该是sum < a,而不是index <= a,因为数组/字符串的最后一个索引是length-1,{ {1}}是您正在递增的变量,而不是sum

此外,另一个问题是,在最后一次“合法”周期后,index将返回index <= a,然后您将true添加到index超出字符串的范围。你应该这样实现它:

sum

修改:如果您不想使用do { point = base.charAt(sum); System.out.println(point); sum += index; } while(sum < a) 循环,可以使用do-while循环实现它:

for