Java8-的StringIndexOutOfBoundsException

时间:2015-02-05 09:32:33

标签: java exception import

这是我的代码段:

import java.util.Scanner;

public class Numrs {

    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        int pos, i = 1;
        char d;
        while (num <= 10) {
            String line = in.nextLine();
            pos = line.length();
            if (line.length() <= 1000000) {

                if (line.charAt(i) == 'R') {

                    line.replace('R', 'K');
                    i++;
                }
                if (line.charAt(i) == 'K') {
                    line.replace('K', 'R');
                    i++;
                }
                num++;

            }

        }

    }

当我输入一个像3这样的单个数字时,它显示一个StringIndexOutOfBoundsException,即使输入了一个2位数字,它也会在没有读取字符串的情况下终止。请帮忙。

2 个答案:

答案 0 :(得分:0)

好吧,如果您只输入一个字符/数字,那么大小将为1,但它将放在索引0中。并且您正尝试line.charAt(i) i=1

答案 1 :(得分:0)

这种方法存在许多问题。 1.您需要传递的输入超过一个数字,例如3 this works,因为在3之后您需要一些字符串。

  1. 您没有更新num。因此它将以无限循环结束

  2. 如果您提供超过10的任何值,这将无法工作。我不确定您想要实现的目标。

  3. 从0开始i,开发者从0开始:)