2016-04-16 3 views
0

を働いていない方法であって、のcharAtはここ

public static String getEncrypted(String x){ 
    char y; 
    String output = " "; 
    int count = 0, position = 0, place= 0; 
    int length = x.length(); 
    while(count < length){ 
     place = length - position; 
     y = x.charAt(place); 
     position++; 
     count++; 
     output = output + y; 
    } 
    return output; 
} 

私は基本的には、このメソッドに供給する作るの言葉にそれを分割文字列を取り、コードをコンパイルすることができています。私はプログラムを使用して、この方法で使用するために何かを入力すると

私は、エラーメッセージ

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4 
    at java.lang.String.charAt(Unknown Source) 
    at encrypt.getEncrypted(encrypt.java:37) 
    at encrypt.main(encrypt.java:23) 

を取得する私の質問は、私が間違って何をやっていると私はそれをどのように修正するのですか?

+0

場所はゼロベースですが、長さはありません。あなたは長さ - 位置-1を行うべきです。長さが4のとき、場所は最大で3になることができます。 –

答えて

1

変更place = length - position;からplace = length - position - 1;もう一度やり直してください

+0

それはうまくいった。ありがとうございました。なぜそれがエラーを修正したのですか?長さが8で位置が0の場合length-position = 8でなければ最後のcharを取得しますか? –

+0

最後の文字は、場所が0で始まるため、場所7では8ではありません。 –

+1

@TheTwistyTieインデックスは0から数え始めます。したがって、最初の文字は位置0に、2番目は位置1に、などです。 (長さ-1)。 – Jesper

関連する問題