文字列が回文かどうかを確認する次のプログラムが見つかりました。なぜ文字列長-1
import java.util.Scanner;
public class PalindromeString{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("Enter the string which you want to check whether that is palindrome or not: ");
String s = in.next();
String r = "";
for(int i=s.length()-1; i>=0; i--){
r = r+s.charAt(i);
}
System.out.println("Reverse of entered string "+s+" is "+r);
if(r.equals(s)){
System.out.println("String "+s+" is palindrome.");
}else{
System.out.println("String "+s+" is not palindrome.");
}
}
}
コーダはs.length()-1
にループ変数i
を初期化し、なぜ私は理解していませんでした。誰も私の理由を説明することはできますか?関連するコンテンツの文字列長を検索しましたが、これに対する回答が見つかりませんでした。
変数iがインデックスとして使用され、javaのインデックスが0から始まるため、 '-1'が実行されなかった場合、forループの最初の文は's.charAt(s.length())'が存在しないので、エラーを引き起こしました。これを確認してください。これは、0ベースのインデックスを使用するほとんどの言語では非常に重要です。 – hbogert
[substring()のendIndexを1減らす理由]の可能な複製(http://stackoverflow.com/questions/13781907/reason-for-subtracting-substrings-endindex-by-1) – Burkely91