有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java移动用于确定字符串是否为回文的逻辑

目前,我对如何将确定字符串是否为回文的逻辑从主方法移动到名为checkPalindrome的方法感到非常困惑?我的方法应该有一个字符串参数,并返回一个布尔值,但我仍然不确定如何做到这一点

import java.util.Scanner;

public class PalindromeCheckMethod {

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a String: ");
        String s = input.nextLine();
        boolean isPalindrome = checkPalindrome(s);
        String msg = "not a palindrome";
        if (isPalindrome) {
            msg = "a palindrome";
        }
        System.out.printf("%s is %s.%n", s, msg);

        s = s.toLowerCase();
        String resultString = "";

        for (int i = 0; i < s.length(); i++) {
            if (Character.isLetter(s.charAt(i)))
                resultString += s.charAt(i);
        }
        s = resultString;

        int low = 0;
        int high = s.length() - 1;

        if (high >= 0)  {


        while (low < high) {
            if (s.charAt(low) != s.charAt(high)) {
                isPalindrome = false;
                break;
            }
                low++;
                high--;
            }
        }
        else {
            isPalindrome = false;
        }

        if (isPalindrome)
            System.out.println(s + " is a palindrome. ");
        else 
            System.out.println(s + " is not a palindrome. ");


        }

private static boolean checkPalindrome(String s) {
    return false;
}

    }

共 (3) 个答案

  1. # 1 楼答案

    我会用^{}来实现这样一个方法

    static boolean checkPalindrome(final String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return sb.toString().equalsIgnoreCase(s);
    }
    

    但是您当然可以用您的实现替换我的实现(我没有验证您的实现)。要调用该方法(并可能利用格式化io),可以使用

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a String: ");
        String s = input.nextLine();
        boolean isPalindrome = checkPalindrome(s);
        String msg = "not a palindrome";
        if (isPalindrome) {
            msg = "a palindrome";
        }
        System.out.printf("%s is %s.%n", s, msg);
    }
    
  2. # 2 楼答案

    你为什么不简单一点呢。确切地说,字符的镜像是相同的,若不是,就不是回文。当你穿过数组的中间而没有发现差异时,它是一个绝对的回文。看看这个

    int len = str.getLenght();
    int i = 0;
    
    do {
        if (str.get(i) == str.get(len-1-i))
            i++;
        else {
            print("NOT a palindrome");
            break;
        }
    
    } while (i < len-1-i) ;
    
    if (i < len-1-i)  print("NOT a palindrome");    
    
  3. # 3 楼答案

    static boolean checkPalindrome(String str) 
    {
       int strEndPoint=str.length()-1;
       int strStartPoint=0;
       boolean isPalindrome=true;
       while(strStartPoint<=strEndPoint)
       {
           if(str.charAt(strStartPoint)!=str.charAt(strEndPoint))
           {
              isPalindrome=false;
              break;
           }
         strStartPoint++;
         strEndPoint ;
      }
     return isPalindrome;
    

    }