检查整数是否具有不同的数字java

时间:2014-11-07 12:49:46

标签: java

我的节目很难过!对于这种方法,我必须检查所有数字是否都是不同的,我无法弄清楚我的生活中我做错了什么。我不知道使用阵列是否是最好的方法。我必须调用getDigit方法。

for (int i = 0; i <= numDigits(number); i++) {
    int digit = getDigit(number,i);
    if (digit == getDigit(number,i)) {
        return false;
    }
}
return true;

4 个答案:

答案 0 :(得分:1)

您可以先从数字中获取每个数字,然后将其添加到HashSet,然后将HashSet的尺寸与数字中的数字进行比较

您可以尝试以下代码:

public static void main(String[] args) {
    int val = 123554;
    Set<Integer> set = new HashSet<Integer>(); // HashSet contains only unique elements
    int count = 0;       // keeps track of number of digits encountered in the number
  // code to get each digit from the number
    while (val > 0) {                           
        int tempVal = val % 10;
        set.add(tempVal);         // add each digit to the hash set
// you can have a boolean check like if(!set.add(tempVal)) return false; because add() returns false if the element is already present in the set.
        val = val / 10;
        count++;
    }

    if (count == set.size()) {
        System.out.println("duplicate digit not present");
    } else {
        System.out.println("duplicate digit present");
    }
}

答案 1 :(得分:0)

将Int拆分为单个数字:

使用 类似 的内容:

以正确顺序打印数字的代码:

int number; // = and int
LinkedList<Integer> stack = new LinkedList<Integer>();
while (number > 0) {
    stack.push( number % 10 );
    number = number / 10;
}

while (!stack.isEmpty()) {
    print(stack.pop());
}

Source

检查重复项:

再次, 类似

public static boolean duplicates (int [] x, int numElementsInX ) {
    Set<Integer> set = new HashSet<Integer>();
    for ( int i = 0; i < numElementsInX; ++i ) {
        if ( set.contains( x[i])) {
            return true;
        }
        else {
            set.add(x[i]);
        }
    }
    return false;
}

Source


替代

如果你可以分割数组,可以使用另一种方法:

int[] numbers = { 1, 5, 23, 2, 1, 6, 3, 1, 8, 12, 3 };
Arrays.sort(numbers);

for(int i = 1; i < numbers.length; i++) {
    if(numbers[i] == numbers[i - 1]) {
        System.out.println("Duplicate: " + numbers[i]);
    }
}

答案 2 :(得分:0)

我想你想比较例如12345和23145的数字,并提示错误,如果它们是相同的(逐位数字,提示为真),我是对的吗? 如果你想这样做,你应该制作2个数组,你必须确保比较两者的每个位置,这样你就可以逐位进行比较。

希望它可以帮到你

答案 3 :(得分:0)

public boolean unique(int theNumber) {
    String number = new Integer(theNumber).toString();
    Set<Character> set = new LinkedHashSet<Character>();
    for(char c:number.toCharArray()) {
        set.add(Character.valueOf(c));
    }
    return number.length() == set.size();

}