我尝试了不同的方法来做到这一点,当我这样做时。
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");
}
}
它告诉我这是否是回文... 因此,它对我有效,但对用户无效。
我想念什么
答案 0 :(得分:1)
问题是,您将输入的值分配给变量first
,然后将first
的值分配给变量last
。您将布尔值声明为isPalindrome = first==last
( true ),在这种情况下这将始终为真,这就是为什么您会收到“这是回文”的原因。在您说“有效”的第二个代码块上,是因为您声明了first = 1
和last = 5
,当您执行isPalindrome = first==last
( false )时,回文将始终为假,因此您将获得“这不是回文”输出。
我认为您需要做的是重写逻辑,以便您可以详细说明要执行的过程。随时提出后续问题。
答案 1 :(得分:0)
在第一个中,用户输入分配给first
的数字,然后将last
设置为对first
的引用。由于isPalindrome
的真值取决于last == first
是否为真,因为您以这种方式进行了编码,所以它将始终为真。但是,这实际上并不能证明该数字是回文,因为例如,如果用户输入数字56,则数字56056并不是回文(反向为65065)。
在第二个程序中,first
始终为1,last
始终为5,因此,由于它们从不相等,因此条件last == first
将始终为false。
您打算通过这些程序实现什么?没有人测试用户输入是回文。如果愿意,请尝试先在注释中编写psuedocode。