2017-01-27 16 views
-2

私は自分のコースをjavaでエクササイズしていますが、タスクは空白で区切られたリストの入力を持つプログラムを作成することです。そして、重要なのは、リストを回り回すことです。つまり、最初の場所を最後の1秒前に置き、最後を切り捨てます。しかし、私はStringIndexOutOfBoundsのこのエラーを取得し続けています。問題であると想定されるのは?Java String String Out Of Bounds

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; 
} 

答えて

1

私はあなたのStringIndexOutOfBoundsはあなたがインデックスinput.lengthにインデックス0から反復するので、1あまりにも多くされているという事実から来ていると思います。

charAtのために、Javaの文字列は0でインデックス付けされているので、0からのカウントを開始します(普通の英語では「最初」と呼ばれます)。このような状況では、最後の文字はインデックスlength-1にあります。

ですから、具体的には次に修正するのは、whileループの条件です。私はあなたの意思が次のように言っていると思います:

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

任意の文字列は、インデックス0から長さ1の文字を持っています。 charAt(length)を実行しようとすると、StringIndexOutOfBoundsになります。

変更&以下にしばらくラインそれが動作するはずです:

while (counter<input.length()){ 
関連する問題