我尝试反转输入的字符串,并输出“这是一个回文”。当输入等于其相反时。
相反的部分是正确的,但它一直说不相等,即使我输入了一个回文数。我该如何解决这个问题??
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.");
}
}
您应该使用
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.");
}
}
}
尝试使用 equals 方法进行字符串比较。
代替这个
if (sequence == reverse) {
用这个
if (sequence.equals(reverse)) {
原因是 == 检查引用相等性,即对字符串的引用并指向 JVM 堆内存区域上的内存位置的“sequence”和“reverse”,检查是否是相同的引用。
但你不想检查这一点。 相反,您打算做的是变量名“sequence”引用的原始字符串是否与具有引用“reverse”的反转字符串内容相同。
因此这里应该使用 equals() 方法。