我正在尝试创建一个程序来检查输入字符串是否为回文结构。我终于设法将它转换为char数组,但我无法弄清楚如何从String in 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
放在大括号中,而对于最后一个索引我可以&# 39;在大括号内使用i
和-1
答案 0 :(得分:2)
length()
方法不接受任何参数。
这是采用索引参数的charAt(...)
方法。
顺便说一下,直到输入字符串的中间位置。
for (int i = 0; i < str.length() / 2; i++) {
if (str.charAt(i) != str.charAt(str.length() -i - 1)) {
isPalindrome = false;
break;
}
}
答案 1 :(得分:0)
str.length(-1-i)
语法不正确,str.length()
API不接受任何参数,其唯一目的是为您提供给定字符串的长度。