В отсортированных массивах найти количество совпадений, т.е. чисел в двух массивах с одинаковым индексом
Помогите, пожалуйста, решить задачу.
Необходимы два массива из 7-ми цифр заполненных цифрами от 0 до 9.
Первый массив - это числа загаданные компанией (random), которая организовывает лотерею.
Второй массив - это числа которые угадал игрок (вводим из консоли).
После того, как оба массива заполнены цифрами, нужно отсортировать их по возрастанию любым способом.
В отсортированных массивах необходимо найти количество совпадений, т.е. чисел в двух массивах с одинаковым индексом.
Например: first[3] должен быть равен second[3], как показано ниже.
Пример вывода в консоль (совпали 1й, 4й и 6й элементы):
[0, 1, 4, 5, 5, 8, 9]
[1, 1, 2, 3, 5, 6, 9]
Количество совпадений: 3
Начало вроде написал, а дальше, понимаю, надо прогнать через цикл, только как, не знаю.
class new2{
public static void main(String[] args) {
int first[] = new int[7];
for(int i = 0; i < first.length; i++) {
first[i] = (int)(Math.random() * 10);
}
Arrays.sort(first);
System.out.println("Введите 7 цифр от 0 до 9: ");
Scanner sc = new Scanner(System.in);
int second[] = new int[7];
for(int i=0; i< second.length;i++){
second[i] = sc.nextInt();
}
Arrays.sort(second);
System.out.print(Arrays.toString(first));
System.out.println("");
System.out.print(Arrays.toString(second));
}
}
Ответы (2 шт):
Вам необходимо просто сравнить соотвествующие позиции каждого массива между собой:
package com.somepackage;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int length = 7;
int[] first = {1, 2, 3, 4, 5, 6, 7};
int[] second = {1, 2, 3, 4, 5, 6, 8};
long count =
IntStream.range(0, length)
.filter(i -> first[i] == second[i])
.count();
System.out.println("Количество совпадений:" + count);
}
}
Просто добавьте еще один цикл for, в котором сравнивайте значения массивов, и если совпадает, увеличивайте значение счетчика. Как-то так:
class new2{
public static void main(String[] args) {
int first[] = new int[7];
for(int i = 0; i < first.length; i++) {
first[i] = (int)(Math.random() * 10);
}
Arrays.sort(first);
System.out.println("Введите 7 цифр от 0 до 9: ");
Scanner sc = new Scanner(System.in);
int second[] = new int[7];
for(int i=0; i< second.length;i++){
second[i] = sc.nextInt();
}
Arrays.sort(second);
System.out.print(Arrays.toString(first));
System.out.println("");
System.out.print(Arrays.toString(second));
//до этого момента без изменений
int count = 0; //СЧЕТЧИК совпадений
for(int i=0;i<second.length;i++){
if(first[i]==second[i]) count++; //Если цифры равны, счетчик увеличиваем на 1
}
System.out.println("Совпадений: "+count);
}
}