这是我的代码:
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);
}
}
每次我,即使输入是回文,该数字也不是回文输出。
答案 0 :(得分:2)
因为您要更新number
。
将其存储在本地,然后在while
循环中进行操作。
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);
请参阅here更正后的工作。
答案 1 :(得分:2)
您正在更新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);
希望这能解决你的问题。
答案 2 :(得分:0)
您需要保持当前值( 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);
}
}
只是一个建议,如果你在SO上提问,那么试着简要介绍一下你在寻找什么。这将有助于其他人为您提供最佳解决方案。
希望这会有所帮助。
答案 3 :(得分:0)
这种情况正在发生,因为您在此处重新分配号码number = number/10;
。
您可以保存对number
的引用,并在此if (numberRef == reverse ) {
处理,如下所示:
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.*/
}
答案 4 :(得分:0)
因为while循环后number变量为0。而你也检查它。 0 ==反向。
它是你代码中的问题。是否可以作为字符串输入?然后有一个小解决方案。