簡體   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