繁体   English   中英

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

[英]How to get the last index from a String in a for loop

我正在尝试制作一个检查输入String是否为回文的程序。 我终于设法首先将其转换为char数组,但是我不知道如何从for循环中的String访问最后一个索引。

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))放在外面,这是(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;
    }
}

str.length(-1-i)语法不正确, str.length() API不接受任何参数,其唯一目的是为您提供给定字符串的长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM