我尝试过以下代码,但不起作用。请查看错误在哪里。
import java.util.Scanner;//take input from the user
public class Reverse {
private double ab;
public boolean check;
public static void main(String args[]) {
Scanner inp = new Scanner(System.in);
System.out.println("Enter s number");
int num = 0;
int rnum = 0;
int pal;
for (num = inp.nextInt(), pal = num; num != 0; num = num % 10) {
rnum = rnum * rnum / 10;
}
if (rnum ! pal) {
System.out.println("Palindrome");
} else {
System.out.println("Not palindrome");
}
public
static void dosomething() {
System.out.println("Thanks for calling");
}
}
}
答案 0 :(得分:1)
我看到一些小错误,例如最后的流浪“public”关键字。这些可能很容易通过你正在使用的IDE调试。
此外,据我所知,你的数字是否为1,for循环将使用余数运算符,它将保持为1.我不完全确定循环如何检查数字是否为回文但这是我的建议:
构建一个while循环,通过除以十来保存截断的数字(最后一位数字)并使用这个简单的快捷方式保存第一个数字:
int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
每个循环应该比较两个数字并查看它们是否相等,如果不是,则while循环应该终止并发送消息,如果是,那么它应该提交不同的消息。
此外,您可以将int转换为字符串并以这种方式对其进行操作,因为它会更容易,但如果您正在处理需要数学运算的赋值,那么我将让您了解详细信息。
答案 1 :(得分:0)
您的代码段中有许多不必要的代码。为了简洁明了,只需循环浏览number
,然后针对每个循环,删除最后的数字并将其放在新的int
上,比如说reverseNumber
。例如,
import java.util.Scanner;
public class Reverse {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int number = 0;
int reverseNumber = 0;
System.out.println("Enter a number");
number = input.nextInt();
System.out.print("Your number ("+number+") in reverse is: ");
while (number != 0) {
//Shave off one number here and attach it to reverseNumber
reverseNumber = (reverseNumber * 10) + (number % 10);
number = number / 10;
}
System.out.print(reverseNumber);
}
}
此代码允许您输入任何(正)整数并接收其回文。