Java 回文与 JavaScript

为什么这在 Java 中可行,但在 JavaScript 中不行?我尝试在 Java 中使用它,它工作得很好,但我不明白为什么它只在 JavaScript 中打印“不是回文”?谢谢


 var n = 121;

 var sum = 0, r;

 var temp = n;    

 while(n>0)

   {    

    r = n % 10;   

    sum = (sum*10)+r;    

    n = n/10;    

   }    

  if(temp==sum)    

    console.log("It is a Palindrome number.");

  else  

    console.log("Not a palindrome");   


暮色呼如
浏览 65回答 2
2回答

慕田峪9158850

当您需要向下除法(也称为整数除法)时,您正在使用浮点除法,因为 JS 数字始终是浮点数。要修复此问题,请在除法之后使用 Math.floor:var n = 121;var sum = 0var r;var temp = n;    while(n > 0){        r = n % 10;       sum = (sum * 10) + r;        n = Math.floor(n / 10);    }if(temp == sum){    console.log("It is a palindrome number.");}else{    console.log("Not a palindrome");}

月关宝盒

该代码在 java 和 javascript 中的结果不完全相同的原因是数据类型的差异。您(很可能)在 java 中声明变量,如下所示:int n = 121;    // this is strictly an integer而当你在 javascript 中声明时:var n = 121;    // this is interpreted according to the calculation where used所以在java中,n/10会给你一个整数,一个四舍五入的整数答案。但在 javascript 中,n/10 可能会给你一个十进制值。这就是你的程序失败的地方。解决方案:在 javascript 中 使用适当的Math.ceil()或floor()函数,使其四舍五入到最接近的整数值。我会让您弄清楚在这种情况下您需要哪一个。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript