Java 我在试图计算一个数字是否为palindrome时出错?
这是我的代码:Java 我在试图计算一个数字是否为palindrome时出错?,java,algorithm,Java,Algorithm,这是我的代码: public static void main(String[] args) { int number; System.out.println("Enter here: "); Scanner sc = new Scanner(System.in); number = sc.nextInt(); int reverse=0; while(number!=0) { int rel = number%10;
public static void main(String[] args) {
int number;
System.out.println("Enter here: ");
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
int reverse=0;
while(number!=0) {
int rel = number%10;
reverse = (reverse*10)+ rel;
number = number/10;
}
if (number == reverse ) {
System.out.println("the number is palaindrome " + reverse);
} else {
System.out.println("the number is not palaindrome " + reverse);
}
}
每次我得到的数字都不是回文输出,即使输入是回文。因为您正在更新编号 本地存储,然后在
循环时在中操作
int lNum = number;
while(number!=0) {
int rel = number%10;
reverse = (reverse*10)+ rel;
number= number/10;
}
if (lNum == reverse ) {
System.out.println("the number is palaindrome "+reverse );
}else
System.out.println("the number is not palaindrome "+reverse);
请参阅更正后的工作。因为您正在更新编号
本地存储,然后在循环时在中操作
int lNum = number;
while(number!=0) {
int rel = number%10;
reverse = (reverse*10)+ rel;
number= number/10;
}
if (lNum == reverse ) {
System.out.println("the number is palaindrome "+reverse );
}else
System.out.println("the number is not palaindrome "+reverse);
请参阅更正后的工作。您也在更新while循环中的原始编号。
所以在if语句中,数字永远不会等于相反的数字
将数字保存在临时变量中,以便在while循环中使用。
您的最终代码应该如下所示
int temp = number;
while(temp!=0) {
int rel = temp%10;
reverse = (reverse*10)+ rel;
temp= temp/10;
}
if (number == reverse ) {
System.out.println("the number is palaindrome "+reverse );
}else
System.out.println("the number is not palaindrome "+reverse);
希望这能解决您的问题。您也在更新while循环中的原始编号(number)。
所以在if语句中,数字永远不会等于相反的数字
将数字保存在临时变量中,以便在while循环中使用。
您的最终代码应该如下所示
int temp = number;
while(temp!=0) {
int rel = temp%10;
reverse = (reverse*10)+ rel;
temp= temp/10;
}
if (number == reverse ) {
System.out.println("the number is palaindrome "+reverse );
}else
System.out.println("the number is not palaindrome "+reverse);
希望这能解决您的问题。您需要保留当前值(temp),然后将您保存的实际值(temp)与反向值进行比较,我正在共享我在本地尝试的代码
import java.util.Scanner;
public class Stack1 {
public static void main(String[] args) {
int number;
System.out.println("Enter here: ");
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
int reverse = 0;
int temp = number;
while (number != 0) {
int rel = number % 10;
reverse = (reverse * 10) + rel;
number = number / 10;
}
String resMessage = temp == reverse ? "the number is palaindrome " + reverse
: "the number is not palaindrome " + reverse;
System.out.println(resMessage);
}
}
这只是一个建议,如果你在问问题,那么试着简单描述一下你在寻找什么。这将帮助这里的其他人为您提供最佳解决方案
希望这会有所帮助 您需要保留当前值(temp),然后将您保存的实际值(temp)与反向值进行比较,下面是我在本地尝试的共享代码
import java.util.Scanner;
public class Stack1 {
public static void main(String[] args) {
int number;
System.out.println("Enter here: ");
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
int reverse = 0;
int temp = number;
while (number != 0) {
int rel = number % 10;
reverse = (reverse * 10) + rel;
number = number / 10;
}
String resMessage = temp == reverse ? "the number is palaindrome " + reverse
: "the number is not palaindrome " + reverse;
System.out.println(resMessage);
}
}
这只是一个建议,如果你在问问题,那么试着简单描述一下你在寻找什么。这将帮助这里的其他人为您提供最佳解决方案
希望这会有所帮助 发生这种情况是因为您在此处重新分配了编号number=number/10代码>。
如果(numberRef==reverse){
,您可以保存对number
的引用,并在此处使用该引用,如下所示:
public static void main(String[] args) {
int number;
System.out.println("Enter here: ");
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
int numberRef = number;
int reverse=0;
while(number != 0) {
int rel = number%10 == 0 ? 0 : number % 10;
reverse = (reverse*10) + rel;
number= number/10;
}
if (numberRef == reverse ) {
System.out.println("the number is palaindrome "+reverse );
} else
System.out.println("the number is not palaindrome " + reverse);
/*Everytime I am getting the number is not palaindrome output even if the input is palaindrome.*/
}
这是因为您在此处重新分配了编号number=number/10;
。
如果(numberRef==reverse){
,您可以保存对number
的引用,并在此处使用该引用,如下所示:
public static void main(String[] args) {
int number;
System.out.println("Enter here: ");
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
int numberRef = number;
int reverse=0;
while(number != 0) {
int rel = number%10 == 0 ? 0 : number % 10;
reverse = (reverse*10) + rel;
number= number/10;
}
if (numberRef == reverse ) {
System.out.println("the number is palaindrome "+reverse );
} else
System.out.println("the number is not palaindrome " + reverse);
/*Everytime I am getting the number is not palaindrome output even if the input is palaindrome.*/
}
因为在while循环之后,number变量是0。您还可以像.0==reverse那样检查它
这就是代码中的问题。是否可以作为字符串输入?然后有一个小的解决方案。因为while循环后数字变量是0。您还可以像.0==reverse那样检查它
这是代码中的问题。是否可以作为字符串输入?然后有一个小的解决方案。在退出while
循环后检查number
的值,另外还要检查while
条件;)我相信您会注意到:)您好,欢迎使用StackOverflow。请花一些时间阅读t他的帮助页面,特别是命名为和的部分。更重要的是,请阅读。您可能还想了解。在退出while
循环后,检查number
的值,另外还要检查while
条件;)我相信您会注意到:)您好,欢迎来到StackOverflow。请请抽出一些时间阅读帮助页面,特别是名为和的部分。更重要的是,请阅读。您可能还想了解。