我在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;
}
答案 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