Java字符串错误超出界限

时间:2017-01-27 23:05:04

标签: java string stringindexoutofbounds

我在java中练习我的课程,任务是编写一个程序,其中包含一个带空格的列表输入。关键是要转动列表,即将最后一秒的第一个放在最后一个之前并截断底片。但我不断收到StringIndexOutOfBounds的错误。什么似乎是问题?

public static void main(String args[])
{ 
    Scanner in = new Scanner (System.in);
    System.out.println("Insert the list: ");
    String input = in.nextLine();

    String out = out(input);

    System.out.println(out);
}

public static String out (String input){
    String reverse = "";
    int counter = 0;

    while (counter<=input.length()){/*
        String min = input.charAt(counter) +                            input.charAt(counter+1);
        int num = Integer.parseInt(min) ;
        if ( num>=0 ){*/
            reverse+= input.charAt(counter);
            counter++;
        /*}*/
    }
    return reverse;
}

2 个答案:

答案 0 :(得分:1)

我怀疑你的StringIndexOutOfBounds来自你从索引0迭代到索引input.length的事实,所以1太多了。

为了charAt,Java中的字符串是0索引的,所以你从0开始计数(你会称之为&#39;第一个&#39;用简单的英语)。在这种情况下,最后一个字符位于索引length-1

所以,具体而言。接下来要修复的是while循环中的条件。我想你的意图是:

while (counter < input.length()) {
...

答案 1 :(得分:1)

任何String都包含从索引0到长度为1的字符。如果你想尝试charAt(长度),你最终会得到StringIndexOutOfBounds。

将while行更改为以下&amp;它应该工作:

paginate=False