【问题标题】:Palindrome Java: While and If/Else StatementsPalindrome Java:While 和 If/Else 语句
【发布时间】:2018-06-23 05:22:51
【问题描述】:

无论我输入什么,我的代码都会不断打印出“true”。我的代码没有显示任何错误,我输入 56 作为输入,它仍然打印“true”。我很难弄清楚为什么。另外,我是 Java 和 Stack Overflow 的新手。任何帮助,将不胜感激。

//回文验证

    temp = integer;
    while (integer > 0)
    {
        remainder = integer%10;
        reverse = reverse * 10 + remainder;
        integer=integer /10;
    }

    if (integer==reverse)

        System.out.println("True");
        else
        System.out.println("False");    

【问题讨论】:

  • 你为什么不让我们知道你到目前为止所做的事情,然后也许人们可以帮助你。 “有什么问题”是不可接受的,所以我认为问题是一个非常简单的问题,如果您在调试模式下运行代码,您会立即找到解决方案。
  • @Nishit 对不起!我是 Java 和 SO 的新手,下次我会记住这一点。谢谢你,我会试试的。
  • 欣赏它的人!它不仅可以帮助我们节省时间,还可以帮助您,即寻求者尝试和学习新事物。现成的解决方案在付出努力之前永远不会受到赞赏。一切顺利:)
  • @tonybolt 你的程序总是返回 true??还是它总是返回 false?
  • @amrendersingh 总是返回真!!

标签: java while-loop reverse palindrome


【解决方案1】:

在您的程序中,当 while 循环完全执行时,integer 变量值将变为零,这就是问题所在。 您需要将if (integer==reverse) 更改为if (temp==reverse)

完整代码:

public class palindrom {
    public static void main(String[] args) {
        int integer = 122; //change this value according to your preference
        int temp = integer;
        int remainder;
        int reverse = 0;
        while (integer > 0){
            remainder = integer%10;
            reverse = reverse * 10 + remainder;
        integer=integer /10;
    }

    if (temp==reverse)
        System.out.println("True");
    else
        System.out.println("False");
    }
}

【讨论】:

    【解决方案2】:

    您需要将 START 值与 REVERSE 进行比较。在您的代码中 (integer==reverse) 将始终为 FALSE,因为在 while 循环之后 integer==0。

            int integer = 12344321;
            int remainder, reverse = 0;
    
            int start = integer;
            while (integer > 0)
            {
                remainder = integer%10;
                reverse = reverse * 10 + remainder;
                integer = integer / 10;
            }
    
            if (start==reverse)
                System.out.println("True");
            else
                System.out.println("False");
            System.out.println(reverse);
    

    【讨论】:

    • 我尝试了您的建议,但输入 56 仍然返回“true”。
    • 我只是将 56 作为初始值,它显示为 False。只需将我的代码复制到 main() 方法 - 你就会看到。我认为您有其中之一 a) 忘记在循环之前初始化 start b) 比较 integer==reverse 而不是 start==reverse
    猜你喜欢
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2014-02-15
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多