Algarismos em posição comum

Olá pessoal, sou iniciante e estou com um problema modularizarão e nao entendo a logica da questão e os programas que desenvolvi para resolver não funcionam como o esperado justamente por eu não fazer ideia de como desenvolve-lo para que cumpra os testes pedidos.

a) Implemente um módulo que dados dois números inteiros positivos retorne a quantidade de dígitos comuns nas mesmas posições.

b) Elabore um programa que leia N pares de valores inteiros positivos, sendo N introduzido pelo utilizador e validado. Após a leitura dos N pares de valores o programa deve apresentar o par que tiver mais dígitos comuns nas mesmas posições. No caso de haver mais do que um par com a mesma quantidade de dígitos em comum, deve ser apresentado o último par encontrado.
O resultado deve conter apenas o par em causa no formato “numero1/numero2”.
No caso de não haver nenhum par de números que tenha algarismos em comum deve ser apresentada a mensagem: “sem resultados”.

Exemplo:

Entrada
3
12345
345
13579
12529
123
4567895
saida
13579/12529

E o que você já fez, cidadão?

mas da erro

int par1;
int par2;
int maiorDigitosComuns = 0;
int maiorPar1 = 0;
int maiorPar2 = 0;

    Scanner scanner = new Scanner(System.in);

    do {
        System.out.println("Introduza N:");
        n = scanner.nextInt();
    } while(n <= 0);
    } while (n <= 0);

    for(int i = 0; i < n; i++) {
    for (int i = 0; i < n; i++) {

        System.out.println("Introduza um novo par de números:");
        System.out.println("----------");

        System.out.println("Par 1:");
        par1 = scanner.nextInt();

        System.out.println("Par 2:");
        par2 = scanner.nextInt();

        int quantidadeDeDigComuns = quantidadeDigitosComunsNaMesmaPosicao(par1, par2);

        if(quantidadeDeDigComuns > maiorDigitosComuns) {
            //CONTINUAR MAIS TARDE
        if (quantidadeDigitosComunsNaMesmaPosicao(par1, par2) > maiorDigitosComuns) {
            maiorDigitosComuns = quantidadeDigitosComunsNaMesmaPosicao(par1, par2);
            maiorPar1 = par1;
            maiorPar2 = par2;
        }

    }



    int a = quantidadeDigitosComunsNaMesmaPosicao(11112,11222);
    System.out.println(a);




    System.out.println("O par que têm mais digitos em comum é o " + maiorPar1 + " e " + maiorPar2 + ". Têm " + maiorDigitosComuns + " digitos em comum.");


}

@@ -50,21 +48,21 @@ public static int quantidadeDigitosComunsNaMesmaPosicao(int num1, int num2) {
String num2String;
int resultado = 0;

    if(num1 < 0 || num2 < 0) {
    if (num1 < 0 || num2 < 0) {
        System.out.println("Números introduzidos incorrectos.");
    } else {

        num1String = Integer.toString(num1);
        num2String = Integer.toString(num2);

        if(num2String.length() > num1String.length()) {
        if (num2String.length() > num1String.length()) {
            String temp = num1String;
            num1String = num2String;
            num2String = temp;
        }

        for(int i = 0; i < num2String.length(); i++) {
            if(num1String.charAt(i) ==  num2String.charAt(i)) {
        for (int i = 0; i < num2String.length(); i++) {
            if (num1String.charAt(i) == num2String.charAt(i)) {
                resultado++;
            }
        }

Você pode usar o operador módulo para separar os algarismo ou converter em String, separar em substring e depois reconverter em int.

Para tu ter um norte:

import java.util.Scanner;

public class Verificador {
	private int numeroAlgarismoV1 = 0;
	private int numeroAlgarismoV2 = 0;
	private int contadorV1 = 0;
	private int contadorV2 = 0;
	private int[] valor1;
	private int[] valor2;
	
	private void separador(int v1, int v2){
		int vlr1 = v1;
		int vlr2 = v2;
		
		/*
		* Conta o número de algarismos
		*/
		while(vlr1 > 0){
			numeroAlgarismoV1++;
			vlr1 /= 10;
		}
		
		while(vlr2 > 0){
			numeroAlgarismoV2++;
			vlr2 /= 10;
		}
		
		valor1 = new int[numeroAlgarismoV1];
		valor2 = new int[numeroAlgarismoV2];
		contadorV1 = numeroAlgarismoV1 - 1;
		contadorV2 = numeroAlgarismoV2 - 1;
		
		/*
		* Preenche os vetores
		*/
		while(v1 > 0){
			valor1[contadorV1--] = v1 % 10;
			v1 /= 10;
		}
		
		while(v2 > 0){
			valor2[contadorV2--] = v2 % 10;
			v2 /= 10;
		}
	}
	
	private int verificarCorrespondencia(){
		int contagem = 0;
		
		if(numeroAlgarismoV1 > numeroAlgarismoV2){
			for(int i = 0; i < numeroAlgarismoV2; i++){
				if(valor1[i] ==  valor2[i])
					contagem++;
			}
			
		}else if(numeroAlgarismoV1 < numeroAlgarismoV2){
			for(int i = 0; i < numeroAlgarismoV1; i++){
				if(valor1[i] ==  valor2[i])
					contagem++;
			}
			
		}else{
			for(int i = 0; i < numeroAlgarismoV1; i++){
				if(valor1[i] ==  valor2[i])
					contagem++;
			}
			
		}
		return contagem;
	}
	
	public static void main(String[] args){
		int valorInformado1;
		int valorInformado2;
		Scanner leitor = new Scanner(System.in);
		Verificador verificador = new Verificador();
		
		System.out.print("Valor 1: ");
		valorInformado1 = leitor.nextInt();
		
		System.out.print("Valor 2: ");
		valorInformado2 = leitor.nextInt();
		
		verificador.separador(valorInformado1, valorInformado2);
		
		System.out.println("");
		for(int i = 0; i < verificador.numeroAlgarismoV1; i++){
			System.out.print(verificador.valor1[i] + " ");
		}
		
		System.out.println("\n");
		for(int i = 0; i < verificador.numeroAlgarismoV2; i++){
			System.out.print(verificador.valor2[i] + " ");
		}
		
		System.out.println("\n");
		System.out.println("Correspondências: " + verificador.verificarCorrespondencia());
		
		leitor.close();
	}
}

Rodando…

image

Aí você implementa o que está faltando.