Como posso comprar dois Arrays e pegar só os números que são iguais e colocar no primeiro Array?
Intenção abaixo:
Array1= {1,2,3,4,5,6,7}
Array2= {4,5,6,7,8,9,0,3,1,33,5}
Agora vem minha duvida!
Array1= {1,3,4,5,6,7}
Array2= {4,5,6,7,8,9,0,3,1,33,5}
[quote=brunokaue]Como posso comprar dois Arrays e pegar só os números que são iguais e colocar no primeiro Array?
Intenção abaixo:
Array1= {1,2,3,4,5,6,7}
Array2= {4,5,6,7,8,9,0,3,1,33,5}
Agora vem minha duvida!
Array1= {1,3,4,5,6,7}
Array2= {4,5,6,7,8,9,0,3,1,33,5}[/quote]
Tu quer algo do tipo ?
List<Integer> array1 = new ArrayList<Integer>();
// imagine ele populado com os valores citados por você
List<Integer> array2 = new ArrayList<Integer>();
// imagine ele populado com os valores citados por você
Iterator<Integer> it = array1.iterator();
while (it.hasNext()) {
Integer value = it.next();
// se o array2 não tem o valor do array1, remove do array1
if (!array2.contains(value))
it.remove();
}
Resolve ?
Sim, tem como fazer o mesmo só que ao contrário?
Digo, preencher o array1 somente com os valores que são diferentes do array2?
array1 = {1,2,3}
array2 = {1,2,4,5,6,7}
o array1 fica intacto, porém os números que aparecem no array2 que são diferentes são adicionados ao array1.
Acho que me expressei errado!
[quote=brunokaue]Sim, tem como fazer o mesmo só que ao contrário?
Digo, preencher o array1 somente com os valores que são diferentes do array2?
array1 = {1,2,3}
array2 = {1,2,4,5,6,7}
o array1 fica intacto, porém os números que aparecem no array2 que são diferentes são adicionados ao array1.
Acho que me expressei errado![/quote]
Qual seria o array resultante para isso ? Seria isso: array3 = {3}.
Afinal, somente o 3 não consta no array2. E Bruno, é só mudar um pouquinho a lógica que lhe passei…
Fazer um programa na linguagem Java que leia dois vetores a1 e a2, depois da leitura o programa deverá incluir em a1 os elementos de a2 que não são iguais aos elementos de a1.
Há como fazer isso em vetor? ou só usando ArrayList mesmo?
[quote=brunokaue]Fazer um programa na linguagem Java que leia dois vetores a1 e a2, depois da leitura o programa deverá incluir em a1 os elementos de a2 que não são iguais aos elementos de a1.
Há como fazer isso em vetor? ou só usando ArrayList mesmo?[/quote]
Claro que sim, dá pra fazer com vetor sim, mas é mais fácil com List. Ainda mais fácil com Set.
Mas como é um exercício pra você exercitar sua lógica e prática da linguagem, eu sugiro que faça com vetores mesmo
Eu jé tentei fazer, não consegui, por isso estou aqui, para alguém ajudar-me a sanar essa dificuldade assim como em outros 2 probleminhas!
É uma lista de exercícios então ?
Posta o que tu já fez camarada, ai ajudamos na sua lógica.
Os exercícios que não fiz são esses:
> Fazer um programa na linguagem Java que leia dois vetores a1 e a2, depois da leitura o programa deverá incluir em a1 os elementos de a2 que não são iguais aos elementos de a1.
> Em teoria de sistemas, define-se como elemento MINIMAX de uma matriz, o menor elemento da linha que se encontra o maior elemento (o maior número contido na matriz) da matriz. Fazer um programa na linguagem Java para entrar com uma matriz quadrada de ordem n e dizer qual o MINIMAX. (Matriz)
> Desenvolva um algoritmo que contabilize a quantidade de vagas existentes em uma escola, e também a quantidade de alunos
matriculados. Para isso, o programa deverá realizar as seguintes atividades:
-Para cada turma, solicitar as seguintes informações: número da turma, capacidade máxima, quantidade de matriculados;
-A capacidade máxima que o programa deve considerar é de 100 turmas. Deverá ser possível indicar o término das turmas informando o valor 0 (zero) no código da turma.
-Ao final, o programa deverá imprimir uma relação de todas as turmas com sua capacidade máxima e sua capacidade ocupada. Além disso, deverá imprimir a quantidade total de vagas que a escola disponibiliza, bem como a quantidade total de alunos matriculados no momento.
O que já fez desse amigão aí ?
O que já fez desse amigão aí ?[/quote]
Bom eu já consegui comprar os números dos vetores, agora só falta a parte de remover e adicionar o vetor2 no vetor1.
[code]
int v1[] = {1, 2, 3, 4};
int v2[] = {1, 2, 3, 4, 5, 6, 7};
for (int i = 0; i < v1.length; i++) {
for (int j = 0; j < v2.length; j++) {
if (v1[i] == v2[j]) {
//aqui tem que ocorrer a remoção dos iguais .
} else {
//adicionar ao v1 o número que não é igual
}
}
}[/code]
Você ja está meio caminho andado, só umas observações:
1 - Quando eles são iguais, você não precisa fazer nada, pois o exercício não diz para remover nada do array2, então mude seu if para verificar quando for diferente.
2 - Quando encontrar o diferente, eis o que você tem que fazer:
- Criar um novo array, com 1 de length a mais do que o array original
- Passar todos os valores do array antigo para o novo array.
- No índice que sobrou, adicionar o número diferente.
[quote=digaoneves]Você ja está meio caminho andado, só umas observações:
1 - Quando eles são iguais, você não precisa fazer nada, pois o exercício não diz para remover nada do array2, então mude seu if para verificar quando for diferente.
2 - Quando encontrar o diferente, eis o que você tem que fazer:
- Criar um novo array, com 1 de length a mais do que o array original
- Passar todos os valores do array antigo para o novo array.
- No índice que sobrou, adicionar o número diferente.[/quote]
Na sala, verbalmente a professora disse para não usar um terceiro vetor!
bom… você pode instanciar o seu primeiro array com um tamanho maior então, o vetor auxiliar é simplesmente pra você conseguir “alterar” o tamanho do vetor, pois você não tem como aumentar o tamanho de um vetor que já está inicializado. Isso te deixa com 2 opções.
Ou você inicializa o vetor com um número maior (o que é ruim, pois você pode não saber o tamanho do segundo vetor, pode ser que tenha inicializado seu primeiro vetor com tamanho 20, mas aí tem que adicionar 100 números depois), ou você usa o vetor auxiliar sempre que precisar alterar o tamanho do seu primeiro vetor.
como que faço para passar os valores do v3 para o v1? ou simplesmente eu mostro v1 e logo v3?
Exemplo de como adicionar um novo elemento ao array:[code]public class Teste{
public static void main(String[] args){
int[] nums = {1, 2, 3, 4};
nums = addValueToArray(nums, 5);
printValues(nums);
}
private static int[] addValueToArray(int[] nums, int num){
int[] aux = new int[nums.length+1];
for(int i=0 ; i<nums.length ; i++){
aux[i] = nums[i];
}
aux[aux.length-1] = num;
return aux;
}
private static void printValues(int[] nums){
for(int i=0 ; i<nums.length ; i++){
System.out.print(nums[i]+" ");
}
}
}[/code] É isso que você queria?
Acho que sim, porem não consegui implementar com dois Arrays aqui =x
[code] public static void main(String[] args) {
int v1[] = {1, 2, 3, 4,35,36};
int v2[] = {1, 2, 3, 4, 5, 6, 7,32,99};
for (int i = 0; i < v1.length; i++) {
for (int j = 0; j < v2.length; j++) {
if (v1[i] == v2[j]) {
} else {
v1 = addValueToArray(v2);
}
}
}
printValues(v1);
}
private static int[] addValueToArray(int[] v1){
int[] aux = new int[v1.length+1];
for(int i=0 ; i<v1.length ; i++){
aux[i] = v1[i];
}
return aux;
}
private static void printValues(int[] v1){
for(int i=0 ; i<v1.length ; i++){
System.out.print(v1[i]+" ");
}
}[/code]
Eu reutilizei parte do seu código, porem sempre mostra o numero repetido ou um 0 no final!
Bom eu consegui, porém já que estava sempre dando errado no ultimo objeto, coloquei para mostrar até o penúltimo.