2016-07-09 6 views
0

文字列が回文かどうかを確認する次のプログラムが見つかりました。なぜ文字列長-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を初期化し、なぜ私は理解していませんでした。誰も私の理由を説明することはできますか?関連するコンテンツの文字列長を検索しましたが、これに対する回答が見つかりませんでした。

+0

変数iがインデックスとして使用され、javaのインデックスが0から始まるため、 '-1'が実行されなかった場合、forループの最初の文は's.charAt(s.length())'が存在しないので、エラーを引き起こしました。これを確認してください。これは、0ベースのインデックスを使用するほとんどの言語では非常に重要です。 – hbogert

+0

[substring()のendIndexを1減らす理由]の可能な複製(http://stackoverflow.com/questions/13781907/reason-for-subtracting-substrings-endindex-by-1) – Burkely91

答えて

0

文字列は文字の配列であり、配列のインデックスは0

長からカウントを開始し、その文字列内の要素の量であるが、配列は0から始まるので、最高のインデックスは、要素の量であります - 1 ==> .length()-1

0

charAtのインデックスは0から始まります。 0が最初の文字です。

これは、長さ10の文字列を意味し、文字数は0〜9であり、1〜10ではありません。

0

Java文字列はゼロベースのインデックスを使用するためです。

ストリング内、すなわち文字インデックスは0からです... N-1

1

のcharAtのインデックスは0、すなわち始まります。 0が最初の文字です。

これは、長さ10の文字列を意味し、文字数は0〜9であり、1〜10ではありません。应该是这样子的

1

からJavaのインデックスアレイので、例えば「こんにちは」の文字列の長さが「H」は「こんにちは」の文字列の0 charachterで5です。 これによると、 'e'文字は1の位置にあり、 'o'は4の位置にあります。

5文字列の長さがないことがわかりやすいので、私たちは最後の文字を欲し、長さ-1が必要です。ポジション。

はまた、私は常に0で始まり、要素の要素/数の大きさ以下の数1に引き続きthis

2

のJava(およびその他のほとんどの言語)の要素のインデックスを見てみましょうお勧めします。

String string = "Hello World" 

が "H" は、文字列の最初の要素であり、したがって、インデックスされる '0'、すなわちストリング[0] = "H"、 "E" が索引付けされ、 '1' - 文字列[1] = "e"などとなります。最後の要素のインデックスは '10'になります。

したがって、上記の例では、11個の要素を持つ配列では、インデックスは0から10になります(文字列の長さから1を引いた値)。

私は、これは私よりも、それはより良い説明だと思う(と写真を持っている!) - http://codingbat.com/doc/java-string-introduction.html

は、文字列は、Javaでの文字の配列であることを忘れ、その操作やアクセスに関する詳細はこれを読んではいけません配列 - http://tutorials.jenkov.com/java/arrays.html

関連する問題