简单的回文



我尝试了不同的方法来做到这一点,当我这样做时。

import java.util.*;
public class Palindrome {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter number");
int number = in .nextInt();
int first = number
int middle = 0;
int last = first;
boolean isPalindrome = last == first;
if (isPalindrome) {
System.out.print("This is a palindrome");
} else
System.out.print("This is not a palindrome");
}
}

它吐出"这是一个回文"。请注意,我不能使用循环。这不应该行吗?

当我这样做时它有效...

import java.util.*;
public class Palindrome {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter number");
int first = 1;
int middle = 0;
int last = 5;
boolean isPalindrome = last == first;
if (isPalindrome) {
System.out.print("This is a palindrome");
} else
System.out.print("This is not a palindrome");
}
}

它告诉我它是否是回文... 所以,它适用于我这边,但不适用于用户端。

我错过了什么

问题是,您将输入的值分配给变量first然后将first的值分配给变量last。您将布尔值声明为isPalindrome = first==last(true(,在这种情况下将永远为真,这就是您得到"这是一个回文"的原因。在你说"有效"的第二个代码块上,是因为你声明了first = 1last = 5,当你做isPalindrome = first==last((时,回文的值将永远是假的,因此你得到"这不是回文"输出。

我认为你需要做的是重写你的逻辑,这样你就可以详细说明你想要做的过程。 请随时提出后续问题。

在第一个中,用户输入一个分配给first的数字,然后将last设置为对first的引用。由于isPalindrome的真值取决于是否last == first,因此它将始终为真,因为您以这种方式编码。但是,这实际上并不能证明该数字是回文,因为例如,如果用户输入数字 56,则数字 56056 不是回文(反面是 65065(。

在第二个程序中,first始终为 1,last始终为 5,因此由于它们永远不会等价,因此条件last == first将始终为假。

您试图通过这些程序实现什么目标?两者都没有测试用户输入是否为回文。尝试先写伪代码,如果你愿意,可以在评论中写。