Как я могу узнать, какое число повторяется?

#java

#java

Вопрос:

Я пытаюсь узнать, какое число повторяется в Java.

Я использую 1.8JDK и никогда не ввожу IF. Я не знаю, что я могу сделать для работы программы, я в затруднении.

Можете ли вы проверить мой код?

 package exercici10;

import java.util.Scanner;

public class isRepeatedOrNot {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int[] myArray = new int[10];

        int[] myArray2 = new int[10];
        for (int i = 0; i < 10; i  ) {
            myArray2[i] = myArray[i];
        }

        System.out.print("Enter 10 numbers: ");

        // Get myArray.
        for (int i = 0; i < 10; i  ) {
            myArray[i] = sc.nextInt();
        }

        // Print myArray.
        for (int i = 0; i < myArray.length; i  ) {
            for (int j = 0; j < myArray2.length; j  ) {
                if (myArray[i] == myArray2[j]) {
                    System.out.println("Is repeated.");
                    return;
                }
            }
        }
        System.out.println("No numbers repeated.");

        sc.close();
    }
}

  

Спасибо.

С уважением, Алекс.

Ответ №1:

Вам не нужно иметь два массива, достаточно использовать один массив и функцию, которая проверит, есть ли повторение числа:

 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] myArray = new int[10];

        System.out.print("Enter 10 numbers: ");

        // Get myArray.
        for (int i = 0; i < 10; i  ) {
            myArray[i] = sc.nextInt();
        }

        
        System.out.println(isNumberRepeated(myArray));

        sc.close();
    }
    
    public static boolean isNumberRepeated(int[] array)
    {
        for (int i=0; i<array.length; i  ) {
            for (int j=i 1; j<array.length; j  ) {
                if (array[i]==array[j]) {
                    return true;
                    }
            }  
    }
        return false;
    }
}
  

Ввод :

 Enter 10 numbers: 1
2
3
4
5
6
7
8
9
10
false
  

Ввод 2 :

 Enter 10 numbers: 1
2
3
4
5
54
6
7
54
9
true
  

Ответ №2:

Вы могли бы использовать HashSet, который не допускает дублирования значений.

 public static void main(String[] args) {
    Integer[] myArray = {1, 2, 3, 1, 3, 4, 5, 7, 6, 3, 2};
    HashSet<Integer> uniqueNumbers = new HashSet<>();
    HashSet<Integer> repeatedNumbers = new HashSet<>();

    for (Integer integer : myArray) {
        if (uniqueNumbers.contains(integer)) {
            repeatedNumbers.add(integer);
        } else {
            uniqueNumbers.add(integer);
        }
    }
    System.out.println(repeatedNumbers);
}
  

Также, если вам нужно изменить свой код, чтобы показать, сколько раз повторяется каждое число, вы можете использовать hashmap .