Здравствуйте. Подскажите как можно доработать код для решения задачи?
Написать программу, которая проверяет, все ли значения элементов массива различные (не повторяются). Вывести:
Yes – если все различные и No – если имеется хоть одно повторение. Массив задается и инициализируется в начале программы.
Нужно сделать без использования методов готовых, классов и т.д.
Код пока есть такой (не получается вывести Yes – если все различные!):
import java.util.Arrays;
import java.util.Scanner;
public class Task4 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Введите размерность: ");
int size = sc.nextInt();
int[] myArray = new int[size];
System.out.println("Введите целые числа массива: ");
for (int i = 0; i < size; i++) {
myArray[i] = sc.nextInt();
}
System.out.println("Исходный массив " + Arrays.toString(myArray));
for (int i = 0; i < myArray.length; i++) { //внешний цикл
for (int j = i + 1; j < myArray.length; j++) { // внутренний цикл
if (myArray[i] == myArray[j]) {
System.out.println("No - Имеется повторение, значение: " + myArray[i] + "; Индекс элемента: " + j);
break;
}
}
}
}
}
Получилось два варианта результата:
Вариант № 1:
Введите размерность:
5
Введите целые числа массива:
1
2
3
4
5
Вывод на экран:
Исходный массив [1,2,3,4,5] - ( здесь должно выйти сообщение Yes - все числа различные!)
Вариант № 2:
Введите размерность:
5
Введите целые числа массива:
1
1
2
5
5
Вывод на экран:
Исходный массив [1,1,2,5,5]
No - Имеется повторение, значение: 1; Индекс элемента: 1
No - Имеется повторение, значение: 5; Индекс элемента: 4
Заранее спасибо!
Azamat #3440154
3 уровень
Задача про одномерные массивы
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел
10 июня, 07:22
Можно отсортировать по возрастанию и потом проверить всё элементы по порядку, не равен ли нулевой с первым и тд.
0
Денис Enterprise Java Developer
4 июня, 10:39
Ну если даже свои методы писать не нужно, вместо вывода No в цикле, проставь булеву переменную в true что мол дубликат найден, и брыкай из цикла (не только внутреннего, но и внешнего тоже).
За пределами цикла сделай вывод на основании этой самой переменной.
Если бы можно было писать свои методы, то твой код вполне норм, только вместо break заюзал бы return а вывод Yes вынес за тело внешнего цикла, если он доработал, значит все разные.
Но на больших массивах, очевидно, это так себе алгоритм, и нужно подумать о чём-то более производительном если с такими придётся работать.
А вот так через вызов метода:
0
Azamat #3440154
4 июня, 11:54
Спасибо большое. Попробую скомпилировать.
0