提问人:JAKE 提问时间:10/27/2023 最后编辑:JAKE 更新时间:10/27/2023 访问量:60
如何制作回文程序?[复制]
How to make Palindrome Program? [duplicate]
问:
我试图反转输入的字符串,并在输入等于其反向时输出“This is a Palindrome.”。
反面部分是正确的,但它一直说它不相等,即使我输入了一个回文编号。我该如何解决这个问题??
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.");
}
}
答:
0赞
Owais Yosuf
10/27/2023
#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赞
John Doe
10/27/2023
#2
尝试使用 equals 方法进行字符串比较。
取而代之的是这个if (sequence == reverse) {
使用这个if (sequence.equals(reverse)) {
原因是 == 检查引用是否相等,即 “sequence” 和 “reverse”,它们引用字符串并指向 JVM 的堆内存区域中的内存位置,被检查是否为同一引用。 由于“sequence”和“reverse”是堆上不同对象的两个不同变量名称,因此显然它们可以是相同的。
而且你不想检查那个。
相反,您打算做的是,变量名称“sequence”引用的原始字符串在内容上是否与引用“reverse”的反向字符串在内容上是否相等。
这个 equals() 方法检查两个引用的对象是否不为 null,它们属于同一类型并且内容相等。
如果上述参数相同,则等于将返回 true,否则返回 false。
因此,这里应该使用 equals() 方法。
上一个:C#:反转句子中的单词
下一个:iOS 中的反向垂直列滚动问题
评论
sequence == reverse
if(sequence.equals(reverse))
String reverse = String.valueOf(array);