Podem explicar esse código que faz a união de nomes?

[code]String c1, c2, c3 = “”, nome = “”;
int i, j;

	System.out.println("Digite uma cadeia, os nomes separados por , " );
	c1 = sc.nextLine();
	System.out.println("Digite outra cadeia " );
	c2 = sc.nextLine();
	
	
	c3 = c1;
	j = 0;
	i = c2.indexOf(", ", j);

/entendi que aqui ele vai localizar a primeira ocorrência de uma vírgula./

	while(i > 0){

/* o que é esse i>0? i começou sendo declarado como inteiro e agora há pouco recebeu c2.indexOf, ou seja, ele recebeu um caractere( a vírgula). */

                      nome = c2.substring(j, i); 

/nome recebe uma parte da cadeia de caracteres, mas qual?/

	if(c1.indexOf(nome) < 0){

/* <0 é no caso de não ter a cadeia procurada?*/

	c3 = c3 + ", " + nome;
		} 
		j = i + 2;
		i = c2.indexOf(", ", j);
	}

nome = c2.substring(j);
if(c1.indexOf(nome) < 0){
c3 = c3 + “, “+ nome;
}
System.out.println (” Cadeia lida: " + c1);
System.out.println (” Cadeia lida: " + c2);
System.out.println (" União dos nomes: " + c3);
}
}[/code]

i = c2.indexOf(", ", j);

indexOf(String str, int fromIndex); retorna um inteiro. Assim que ele achar str ele retorna seu índice.

[quote]while(i > 0){

/* o que é esse i>0? i começou sendo declarado como inteiro e agora há pouco recebeu c2.indexOf, ou seja, ele recebeu um caractere( a vírgula). */ [/quote]

Como já percebeu ‘i’ não recebeu caracter e sim um inteiro.

nome = c2.substring(j, i);

Pega do primeiro índice que inicialmente é zero até o índice ‘i’ que tem o valor do índice da string que você está usando como separador, no caso, ", ". Ele copia tudo até encontrar uma vírgula.

Abraço.

Obrigado, mas nessa parte aqui

while(i > 0){ nome = c2.substring(j, i); if(c1.indexOf(nome) < 0){ c3 = c3 + ", " + nome; } j = i + 2; i = c2.indexOf(", ", j); }

Quando o i não seria maior do que zero? Esse i está contando quantos caracteres tem o nome?

indexOf retorna -1 quando não encontra a substring.

Dica: rode esse programa com um debugger (como o do NetBeans ou do Eclipse) e veja que valores a variável i toma.
Nesse seu caso é que o nome da variável não ajuda (deveria ser “pos” ou “posicao”); mas de modo geral, quando tiver dúvidas sobre o que um programa faz, use um debugger ou ponha um monte de “printlns” dos valores das variáveis que são duvidosas.
Até hoje em dia, depois de mais de 20 anos de programação, tenho de fazer isso, portanto não tenha vergonha de fazer isso também.

Não sabia disso( debugar).

Então, eu tentei compilar no NetBeans, mas o botão está inativo(build> compile file).

Editado… já consegui compilar. Agora fui no menu window, debugging, local variables e não aconteceu nada.

clique em cima da numeração das linhas do seu codigo, que aparecera um quadradinho normalmente vermelho, chamdo de break point, depois execute em modo de depuração entao o processo ira parar na linha onde você definiu o break point e podera acompanhar os processos linha por linha.

vou tentar

Eu marquei um ponto e fui no menu window, debbuging, local variables. Não aconteceu nada.

Alô?

alô … quem está falando?