我正在尝试编写一个程序来检查输入字符串是否为回文。我终于成功地首先将其转换为 char 数组,但我不知道如何在 for 循环中访问字符串的最后一个索引。
import java.util.Scanner;
public class Task8 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean isPalindrome = true;
System.out.println("Please, enter string!");
String str = sc.nextLine();
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
if(chars[i]!= chars[chars.length-i-1]){
isPalindrome = false;
break;
}
}
if(isPalindrome){
System.out.println("It is palindrome!");
}
if(!isPalindrome){
System.out.println("It isnt a palindrome!");
}
}
}
这是最终结果,看起来它正在工作,但是如果我尝试以下操作,Eclipse 将返回错误:
for(int i = 0; i < str.length(); i++){
if(str.charAt(i)!= str.charAt(str.length(-1-i)){
isPalindrome = false;
break;
}
}
如果我将 -1-i
放在大括号之外,它就可以工作 (str.charAt(i)!= str.charAt(str.length()-1-i) )
,但为什么在第一个索引上它允许我将 i
放在大括号中,而对于最后一个索引我不能使用 i
和 - 1
大括号内?
最佳答案
length()
方法不接受任何参数。
这是采用索引参数的 charAt(...)
方法。
顺便说一句,直到输入字符串的中间就足够了。
for (int i = 0; i < str.length() / 2; i++) {
if (str.charAt(i) != str.charAt(str.length() -i - 1)) {
isPalindrome = false;
break;
}
}
关于java - 如何在for循环中从字符串中获取最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47704163/