-2

我正在为我的 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;
}
4

2 回答 2

1

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

由于charAtJava 中的字符串是 0 索引的,因此您从 0 开始计数(用简单的英语称为“第一个”)。在这种情况下,最后一个字符位于 index 处length-1

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

while (counter < input.length()) {
...
于 2017-01-27T23:13:58.873 回答
1

任何字符串都有从索引 0 到长度为 1 的字符。如果您尝试执行 charAt(length),您最终会得到 StringIndexOutOfBounds。

将 while 行更改为下面,它应该可以工作:

while (counter<input.length()){
于 2017-01-27T23:14:58.870 回答