回文 java 错误
Palindrome java error
我在 Java 中遇到问题。我正在制作一个程序来检查给定文本是否为回文。我 99% 确定我的代码是正确的,但我得不到好的结果。这是代码。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
System.out.print("Enter a line of text to check if palindrome: ");
String text = scan.nextLine();
String revText = text.replaceAll("[^A-Za-z]", "").toLowerCase().trim(); /*
* Using regex here... everything that is not
* (^) from A-Z (capital) to a-z replace with
* ("") in revText.
*/
sb.append(revText).reverse().toString();
System.out.println("Reversed: " + sb);
System.out.println("Normal: " + revText);
System.out.println(sb.equals(revText));
scan.close();
}
例如我输入:
Enter a line of text to check if palindrome: Anna2023
Reversed: anna
Normal: anna
false
为什么是假的? ;/
尝试
System.out.println(revText.equals(sb.toString()));
sb
不等于字符串,因为它不是 String
。它是用于构建字符串的容器。打印 sb 显示 String
的原因是 System.out.println
将调用 toString
给它的任何东西。
StringBuilder
class 不会覆盖 Object
equals
方法 class.Hence 它的 equals 方法将检查对象引用是否相同以及它们是否相同那么只有 return true.In String
class 的情况下,它会覆盖对象 class 中的 equals 方法,并检查两个字符串的内容是否相等。
在您的代码中,您正在 StringBuilder
对象上调用 equals
方法,由于两个引用不同,因此 returning 为 false。
将其转换为字符串,然后调用 equals()
、
System.out.println(sb.toString().equals(revText));
Java .equals between String and StringBuilder
我在 Java 中遇到问题。我正在制作一个程序来检查给定文本是否为回文。我 99% 确定我的代码是正确的,但我得不到好的结果。这是代码。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
System.out.print("Enter a line of text to check if palindrome: ");
String text = scan.nextLine();
String revText = text.replaceAll("[^A-Za-z]", "").toLowerCase().trim(); /*
* Using regex here... everything that is not
* (^) from A-Z (capital) to a-z replace with
* ("") in revText.
*/
sb.append(revText).reverse().toString();
System.out.println("Reversed: " + sb);
System.out.println("Normal: " + revText);
System.out.println(sb.equals(revText));
scan.close();
}
例如我输入:
Enter a line of text to check if palindrome: Anna2023
Reversed: anna
Normal: anna
false
为什么是假的? ;/
尝试
System.out.println(revText.equals(sb.toString()));
sb
不等于字符串,因为它不是 String
。它是用于构建字符串的容器。打印 sb 显示 String
的原因是 System.out.println
将调用 toString
给它的任何东西。
StringBuilder
class 不会覆盖 Object
equals
方法 class.Hence 它的 equals 方法将检查对象引用是否相同以及它们是否相同那么只有 return true.In String
class 的情况下,它会覆盖对象 class 中的 equals 方法,并检查两个字符串的内容是否相等。
在您的代码中,您正在 StringBuilder
对象上调用 equals
方法,由于两个引用不同,因此 returning 为 false。
将其转换为字符串,然后调用 equals()
、
System.out.println(sb.toString().equals(revText));
Java .equals between String and StringBuilder