简单回文

时间:2018-09-20 03:20:54

标签: java 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 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");
 }
}

它告诉我这是否是回文... 因此,它对我有效,但对用户无效。

我想念什么

2 个答案:

答案 0 :(得分:1)

问题是,您将输入的值分配给变量first,然后将first的值分配给变量last。您将布尔值声明为isPalindrome = first==last true ),在这种情况下这将始终为真,这就是为什么您会收到“这是回文”的原因。在您说“有效”的第二个代码块上,是因为您声明了first = 1last = 5,当您执行isPalindrome = first==last false )时,回文将始终为假,因此您将获得“这不是回文”输出。

我认为您需要做的是重写逻辑,以便您可以详细说明要执行的过程。随时提出后续问题。

答案 1 :(得分:0)

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

在第二个程序中,first始终为1,last始终为5,因此,由于它们从不相等,因此条件last == first将始终为false。

您打算通过这些程序实现什么?没有人测试用户输入是回文。如果愿意,请尝试先在注释中编写psuedocode。