如何制作回文程序?

问题描述 投票:0回答:2

我尝试反转输入的字符串,并输出“这是一个回文”。当输入等于其相反时。

相反的部分是正确的,但它一直说不相等,即使我输入了一个回文数。我该如何解决这个问题??

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("Enter a sequence of numbers: ");
    String sequence = scanner.next();
    
    char[] array = new char[sequence.length()];
    int numberIndex = 0;
            
    String reverse = "";
    
    for (int i = sequence.length() - 1; i >= 0; i--) {
        array[numberIndex] = sequence.charAt(i);
        
        numberIndex++;
    }
    
    for (int i = 0; i < sequence.length(); i++) {
        reverse += array[i];
    }
    
    System.out.println(reverse);
    
    if (sequence == reverse) {
        System.out.println("This number is a palindrome.");
    } else {
        System.out.println("This number is not a palindrome.");
    }
    
}
java reverse palindrome
2个回答
1
投票

您应该使用

equals
方法来比较两个字符串的内容。

试试这个:

import java.util.Scanner;

public class PalindromeChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a sequence of numbers: ");
        String sequence = scanner.next();

        char[] array = new char[sequence.length()];
        int numberIndex = 0;

        String reverse = "";

        for (int i = sequence.length() - 1; i >= 0; i--) {
            array[numberIndex] = sequence.charAt(i);
            numberIndex++;
        }

        for (int i = 0; i < sequence.length(); i++) {
            reverse += array[i];
        }

        System.out.println(reverse);

        if (sequence.equals(reverse)) {
            System.out.println("This sequence is a palindrome.");
        } else {
            System.out.println("This sequence is not a palindrome.");
        }
    }
}

0
投票

尝试使用 equals 方法进行字符串比较。

代替这个

if (sequence == reverse) {

用这个

if (sequence.equals(reverse)) {

原因是 == 检查引用相等性,即对字符串的引用并指向 JVM 堆内存区域上的内存位置的“sequence”和“reverse”,检查是否是相同的引用。

但你不想检查这一点。 相反,您打算做的是变量名“sequence”引用的原始字符串是否与具有引用“reverse”的反转字符串内容相同。

因此这里应该使用 equals() 方法。

© www.soinside.com 2019 - 2024. All rights reserved.