warum string-Länge -1
Ich gefunden habe, das folgende Programm zu überprüfen, ob ein string ein Palindrom ist.
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.");
}
}
}
Ich nicht verstehen, warum der Programmierer initialisiert die Schleife variable i
zu s.length()-1
. Kann jemand mir erklären, warum? Ich habe gesucht bezogene Inhalte für die string-Länge, aber konnte Sie nicht finden, eine Antwort für diese.
- Da die variable
i
dient als index und die Indizes in java bei 0 beginnen. Wenn die-1
wäre nicht ausgeführt worden, dann ist die erste Anweisung in der for-Schleife haben, würde ein Fehler ausgelöst, das.charAt(s.length())
nicht vorhanden - überprüfen Sie, dies ist eine entscheidende Verständnis in den meisten Sprachen, welche die 0-basierte Indizes. - Mögliche Duplikate von Grund für die Subtraktion von substring()'s endIndex-1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Indizes der Elemente, die in Java (Und den meisten anderen Sprachen) beginnen immer mit 0 und weiterhin die Nummer 1 unter Größe des Elements/Anzahl der Elemente.
"H" ist das erste element in der Zeichenfolge und ist daher indiziert die '0', dh string[0] = "H", "e" ist indiziert '1' -- string[1] = "e", etc. Das Letzte element wird indiziert '10'.
So, in dem Beispiel oben durch ein array mit 11 Elementen werden die Indizes gehen von 0 bis 10 (Die string-Länge minus eins).
Ich denke, das erklärt es besser als ich (und Bilder!) -- http://codingbat.com/doc/java-string-introduction.html
Vergessen Sie nicht, ein string ist ein array von chars in Java, so Lesen Sie diese für weitere Informationen über die Manipulation und den Zugriff auf arrays -- http://tutorials.jenkov.com/java/arrays.html
Strings sind arrays von chars, und die array-Indizes zählen von 0.
Länge ist die Menge der Elemente, die in das char-array, aber da das array bei 0 beginnt der höchste index ist die Menge der Elemente - 1 ==> .length() -1
Den index für die charAt der bei 0 beginnt. dh. 0 ist das erste Zeichen.
Dies bedeutet einen string der Länge 10, hat chars zwischen 0-9, nicht 1-10.
Den index für die charAt der bei 0 beginnt. dh. 0 ist das erste Zeichen.
Dies bedeutet einen string der Länge 10, hat chars zwischen 0-9, nicht 1-10. 应该是这样子的
Weil java die Indizierung von arrays von 0.
Z.B. "Hello" - string der Länge 5. das 'H' ist die 0. charachter der Zeichenfolge "Hello".
Nach dieser, das 'e' charachter ist int der 1. position, und das 'o' ist in die 4.
Leicht zu sehen, dass es keine 5 (die Länge der Zeichenfolge) position, so dass, wenn wir wollen, dass die letzten charachter, müssen wir die length-1. position.
Außerdem schlage ich vor, nehmen Sie einen Blick auf diese
Da Java Strings null-basierte Indizierung.
d.h. Charakter Indizes, die in der Zeichenfolge sind von 0...n-1