如何从for循环中的String中获取最后一个索引

时间:2017-12-07 21:33:57

标签: java string

我正在尝试创建一个程序来检查输入字符串是否为回文结构。我终于设法将它转换为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

2 个答案:

答案 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不接受任何参数,其唯一目的是为您提供给定字符串的长度。