我尝试了不同的方法来做到这一点,当我这样做时。
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 = 1
和last = 5
,当你做isPalindrome = first==last
(假(时,回文的值将永远是假的,因此你得到"这不是回文"输出。
我认为你需要做的是重写你的逻辑,这样你就可以详细说明你想要做的过程。 请随时提出后续问题。
在第一个中,用户输入一个分配给first
的数字,然后将last
设置为对first
的引用。由于isPalindrome
的真值取决于是否last == first
,因此它将始终为真,因为您以这种方式编码。但是,这实际上并不能证明该数字是回文,因为例如,如果用户输入数字 56,则数字 56056 不是回文(反面是 65065(。
在第二个程序中,first
始终为 1,last
始终为 5,因此由于它们永远不会等价,因此条件last == first
将始终为假。
您试图通过这些程序实现什么目标?两者都没有测试用户输入是否为回文。尝试先写伪代码,如果你愿意,可以在评论中写。