Converter código c para java

#include <stdio.h>

void loop(int n, int *nando, int *dunga)
{

if(n == 0)
	return;

int unity = n % 10;

if(unity % 2 ==0)
{
	*dunga += unity;
}
else
{
	*nando += unity;
}

return loop(n/10, nando, dunga);

}

int main ()
{
int n, nando = 0, dunga = 0;

scanf("%d", &n);

loop(n, &nando, &dunga);

if(dunga > nando)
{
	printf("Vencedor: Dunga\n");
	printf("%d Pontos de Vantagem\n", dunga - nando);
}
else if(nando > dunga)
{
	printf("Vencedor: Nando\n");
	printf("%d Pontos de Vantagem\n", nando - dunga);
}
else
{
	printf("Empate\n");
}

return 0;

}

Normal ué, a única diferença é que o scanf , você deve usar o Scanner.

Não mesmo, há uma grande diferença no código dele para um código Java:
Ele passa ponteiros de int para a função loop e altera eles dentro da função.
Isso não é possível no Java, pois Java não passa parâmetros por referência e sim por cópia da referência.

Então ele tem que modificar a implementação utilizando um objeto como parâmetro ou modificar o retorno do loop para retornar as alterações.

Exemplo:

import java.io.PrintStream;
import java.util.Scanner;

public class Programa {

    public static void main(String[] args) {
        try {
            Programa programa = new Programa();
            programa.executar();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    private final Scanner entrada = new Scanner(System.in);
    private final PrintStream saida = System.out;

    class Jogadores {

        public int nando;
        public int dunga;
    }

    private void executar() {
        int n = Integer.parseInt(entrada.nextLine());
        Jogadores jogadores = new Jogadores();
        loop(n, jogadores);
        if (jogadores.dunga > jogadores.nando) {
            saida.printf("Vencedor: Dunga\n");
            saida.printf("%d Pontos de Vantagem\n", jogadores.dunga - jogadores.nando);
        } else if (jogadores.nando > jogadores.dunga) {
            saida.printf("Vencedor: Nando\n");
            saida.printf("%d Pontos de Vantagem\n", jogadores.nando - jogadores.dunga);
        } else {
            saida.printf("Empate\n");
        }
    }

    void loop(int n, Jogadores jogadores) {
        if (n == 0) {
            return;
        }
        int unity = n % 10;
        if (unity % 2 == 0) {
            jogadores.dunga += unity;
        } else {
            jogadores.nando += unity;
        }
        loop(n / 10, jogadores);
    }
}
2 curtidas