我找到了以下程序来检查字符串是否是回文。
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.");
}
}
}
我不明白为什么编码器将循环变量i
初始化为s.length()-1
。谁能解释我为什么?我搜索了相关内容的字符串长度,但无法找到答案。
答案 0 :(得分:2)
Java中的元素索引(以及大多数其他语言)始终以0开头,并继续使用低于元素大小/元素数量的数字1。
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
答案 1 :(得分:1)
字符串是字符数组,数组索引从0开始计数。
length是char数组中元素的数量,但因为数组从0开始,所以最高索引是元素的数量 - 1 ==> .length() - 1
答案 2 :(得分:1)
charAt的索引从0开始。 0是第一个字符。
这意味着一个长度为10的字符串,字符在0-9之间,而不是1-10。
答案 3 :(得分:1)
charAt的索引从0开始。 0是第一个字符。
这意味着一个长度为10的字符串,字符在0-9之间,而不是1-10。应该是这样子的
答案 4 :(得分:1)
因为java索引数组来自0.
例如“Hello”字符串的长度为5.“H”是“Hello”字符串的0. charachter。 据此,'e'字符在1.位置,'o'在4位。
很容易看出没有5(字符串的长度)位置,所以如果我们想要最后一个字符,我们需要长度为1。位置。
另外,我建议您查看this
答案 5 :(得分:0)
因为Java Strings使用从零开始的索引。
即。字符串中的字符索引是0 ... n-1