我已经查看了几个不同的堆栈问题并用Google搜索,但我读过的内容并没有真正解决整数的反转问题,而只是字符串。
所以现在我的代码可能会或可能根本不起作用,这可能是你见过的最愚蠢的事情,并且欢迎和更正,但我希望我的代码将要做的是通过100 - 999乘以两个整数然后检查它是否是回文。带有reverse.equals(sum)的if是完全伪代码,显然不会起作用,但我无法弄清楚如何检查回文int。有一个简单的方法吗?我已经阅读了一些相当漫长而复杂的方法,但我确信这是一个简单的方法。也许不吧。 :/。无论如何,这是我的代码。
public class PalandromicNum {
public static void main(String[] args){
int numOne = 100;
int numTwo = 100;
int toteVal;
int counter = 1000;
int sum = 0;
int finalSum = 0;
for(int i=0; i<counter; i++){
toteVal = numOne * numTwo;
numTwo++;
if(numTwo == 999){
numOne++;
numTwo = 100;
}
if(toteVal < sum){
sum += toteVal;
if(reverse.equals(sum)){
finalSum = sum;
System.out.println(finalSum);
}
}
}
}
}
提前再次感谢!
答案 0 :(得分:2)
这是在我的手机上,对任何错误感到抱歉。
将您的号码转换为字符串并:
public static boolean isPalindrome(String str)
{
// base recursive case
if (str.length <= 1) {
return true;
}
// test the first and last characters
char firstChar = str.charAt(0);
char lastChar = str.charAt(str.length - 1) // subtract 1 as indexes are 0 based
if (!firstChar.equals(lastChar)) {
return false;
}
// if the string is longer than 2 chars and both are equal then recursively call with a shorter version
// start at 2nd char, end at char before last
return isPalindrome(str.substring(1,str.length);
}
答案 1 :(得分:0)
反转整数非常简单。请记住mod 10
给你最后一位数字。在它上面循环,一次砍掉第一个数字的最后一个数字并将其添加到新数字的反转。然后是简单integer equality
int rev = 0;
int n = sum;
while(n)
{
rev = rev*10 + n%10;
n /= 10;
}
if(sum==rev)
//palindrome
else
//no no no no.
答案 2 :(得分:0)
您可以创建一个名为isPalindrome的函数来检查数字是否为回文结构。 在代码中使用此功能。 您只需将要检查的号码传递给此功能即可。 如果结果为真,那么该数字是回文。 否则,它不是回文。
public static boolean isPalindrome(int number) {
int palindrome = number; // copied number into variable
int reverse = 0;
while (palindrome != 0) {
int remainder = palindrome % 10;
reverse = reverse * 10 + remainder;
palindrome = palindrome / 10;
}
// if original and reverse of number is equal means
// number is palindrome in Java
if (number == reverse) {
return true;
}
return false;
}
}
答案 3 :(得分:0)
我相信如果你想知道有多少回文在100-999之间,这段代码可以帮助你。当然,它会对回文数量进行两次计算,因为它会考虑回文的两种排列。如果我是你,我会开始创建方法来完成你的大部分工作,因为它使调试更容易。
int total = 100;
StringBuilder stringSumForward;
StringBuilder stringSumBackward;
int numberOfPals = 0;
for(int i = 100; i < 999; i++){
for(int j = 100; j < 999; j++){
total = i * j;
stringSumForward = new StringBuilder(String.valueOf(total));
stringSumBackward = new StringBuilder(String.valueOf(total)).reverse();
if(stringSumForward.toString().equals(stringSumBackward.toString())){
numberOfPals++;
}
}
}