【发布时间】:2015-01-01 02:29:00
【问题描述】:
我正在尝试查看 int 是否具有相同数字的倍数。试图在没有字符串方法或数组的情况下做到这一点。我遇到问题的主要方法是hasDistinctDigits()。它在重复数字位于末尾时有效,但在它们位于开头或中间时无效。
public static void main(String[] args) {
System.out.println(hasDistinctDigits(12234));
}
public static boolean hasDistinctDigits(int number) {
boolean returner = true;
int count = 1;
int newNum = number;
int digit = 0;
while (count < numDigits(number)) {
while (count < numDigits(newNum)) {
digit = newNum % 10;
newNum/=10;
if (digit == getDigit(newNum, count)) {
returner = false;
}
count++;
}
count++;
}
return returner;
}
public static int numDigits(int number) {
int count = 0;
while (number != 0) {
number /= 10;
count++;
}
return count;
}
public static int getDigit(int number, int i) {
int digit = 0;
int count = 0;
int originalNum = number;
while (count <= i) {
if (count == i) {
digit = number % 10;
}
number /= 10;
count++;
}
if (i > numDigits(originalNum)) {
return -1;
} else {
return digit;
}
}
}
如果运行此程序,您将看到 '2' 重复,但该方法的计算结果仍为 true,而它应该是 false。
【问题讨论】:
-
有什么问题?你的代码不能编译吗?你有例外吗?你得到不正确的值吗?你期待什么结果?为什么这样的结果应该是正确的?你得到了什么?
-
如果 number 参数具有一位数的倍数,我似乎无法让我的 hasDistinctDigits 方法返回 false。
标签: java loops while-loop int