Java 它工作,但我仍然得到一个错误消息,我做错了什么?

Java 它工作,但我仍然得到一个错误消息,我做错了什么?,java,Java,我的老师想让我们取一个被插补的字符串,取一定的增量,然后以这些增量提取字符。我已使其正常工作,但仍收到以下错误消息: java.lang.StringIndexOutOfBoundsException: String index out of range: 21 然后突出显示代码行point=base.charAt(sum): 这是我的全部代码,您可以看到我在做什么 import java.util.*; public class EveryOtherCharacter { public

我的老师想让我们取一个被插补的字符串,取一定的增量,然后以这些增量提取字符。我已使其正常工作,但仍收到以下错误消息:

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();
   }
  }
 }
import java.util.*;
公共类每个其他字符{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入字符串:”);
String base=input.nextLine();
System.out.print(“输入增量:”);
int index=input.nextInt();
int a=base.length();
整数和=0;
焦点;
如果(索引>a){
System.out.println(“无效增量:+索引”);
}
否则{

while(index首先,
while
循环的条件应该是
sum
,而不是
索引Java为0(字符串
的第一个字符位于
0
位置,最后一个位于
长度-1
),因此
while(indexIt看起来你得到的是数组外的字符。如果我使用do while循环,lengthmy老师会取分数。有没有办法用for循环来实现这一点?
do {
    point = base.charAt(sum);
    System.out.println(point);
    sum += index;
} while(sum < a)
for(sum = 0 ; sum < a ; sum += index) {
    point = base.charAt(sum);
    System.out.println(point);
}