java - 如何在for循环中从字符串中获取最后一个索引

标签 java string

我正在尝试编写一个程序来检查输入字符串是否为回文。我终于成功地首先将其转换为 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/

相关文章:

java - 合并队列链表

java - oracle java官方文档中处理器吞吐量的数字是多少

java - 如何使用 Spring WebFlux 构建响应式(Reactive)内存存储库?

java - String to int 给出 nullpointerexception

string - awk 字符串替换

python - 在 python 中用子列表拆分字符串

java - 字符串堆未正确插入

java - 如何使用Java查找字符串的循环依赖

python - 如何为另一个字符串封装字符串?

python - 替换非数字字符