Criando um terceiro vetor a partir de dois vetores

3 respostas
denistuning

Gostaria de saber pq esse condigo não funciona.
Criei dois vetor, inseri valores nele e depois crio um terceiro vetor para pegar os dois anteriores,
meu prof. já está ensinando como fazer isso pelo System.Arraycopy ().
Mas queria fazia algo do tipo a mão.
Att.

import java.util.Arrays;

public class ExercicioArrays{

    public static void main(String[] args) {

        
        int w[];//array a se alocar o y[] mais o z[]

        //Aqui estou criando um vetor com alguns numeros só para nao fazer a mao.
        int y[] = new int[8];
        System.out.println("");
        for (int i = 1; i < y.length; i++) {
            y[i] = i;
            System.out.print(y[i] + ", ");
        }

        //Aqui estou criando um vetor a mão mesmo pra exercitar os dois tipos mesmo.
        int[] z = {87, 9, 87, 5, 87, 6, 7, 52, 96, 14};
        System.out.println("\n Testando z[]");
        for (int i = 0; i < z.length; i++) {
            System.out.print(z[i] + ", ");//converindo se esta correto o vetor.

        }
        System.out.println("\nVetores:\n");
        if (z.length < y.length) {//vê qual vetor é maior e cria um terceiro
            //w []= new int[y.length];//Testei dos dois jeitos, porém acho que está errado dessa maneira.
            int[] w = new int[y.length];
            for (int i = 0; i < y.length; i++) {
                w[i] = y[i];//pega o vetor y[]e joga dentro do w[]
            }
            for (int i = 0; i < w.length; i++) {
                w[i + y.length] = z[i];//pega o vetor z[] e começa a jogar apartir da posição y[i+y.lenght]
            }
            for (int i = 0; i < w.length; i++) {
                System.out.print(w[i] + ", ");
            }
        } else {
            int[] w = new int[z.length];//cria um terceiro se o primeiro nao for maior que esse
            for (int i = 0; i < z.length; i++) {
                w[i] = z[i];//joga o vetor z[] dentro do w[]
            }
            for (int i = 0; i < w.length; i++) {
                w[i + z.length] = y[i];//agora joga o vetor y[] detro do w[]
            }
            for (int i = 0; i < w.length; i++) {
                System.out.print(w[i] + ", ");
            }
        }
        Arrays.sort(w);
        for (int j = 0; o < w[].length; j++) {
            System.out.print(w[j] + ", ");
        }
    }
}

3 Respostas

pvrsouza
Eu achei que sua lógica ficou meio confusa. Eu identifiquei alguns erros mas como estou com muito sono(são 2:17 da manhã...rsrsrs) eu prefiro fazer uma lógica para vc. Vê se fica melhor:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package guj;

import java.util.Arrays;

/**
 *
 * @author Administrador
 */
public class ExercicioArrays
{

    public static void main(String[] args)
    {

        //controla a quantidade de indices
        int indice = 0;

        //cria os dois vetores
        int[] vet1 =
        {
            1, 2, 3, 4, 5
        };
        int[] vet2 =
        {
            5, 6, 7, 8, 9
        };

        /**
         * Cria-se o vetor que irá receber os valores dos dois anteriores.
         * Note que o tamanho desse vetor tem que ser a soma da quantidade de posições dos outros.
         */
        int[] vet3 = new int[vet1.length + vet2.length];

        //tirando a prova dos nove
        System.out.println("O vetor vet1 tem " + vet1.length + " posicoes e o vetor vet2 tem " + vet2.length + " posicoes. Portanto o vet3 terá " + vet3.length + " posicoes.");

        //fazendo o preechimento
        for (int i = 0; i < vet1.length; i++)
        {
            vet3[indice] = vet1[i];
            indice++;
        }

        for (int i = 0; i < vet2.length; i++)
        {
            vet3[indice] = vet2[i];
            indice++;
        }

        //exibe o terceiro vetor preenchido com os dois anteriores
        for (int i = 0; i < vet3.length; i++)
        {
            System.out.println(vet3[i]);
        }

    }
}
Se não tiver entendido alguma coisa é só falar!

Abraços!

denistuning
pvrsouza:
Eu achei que sua lógica ficou meio confusa. Eu identifiquei alguns erros mas como estou com muito sono(são 2:17 da manhã...rsrsrs) eu prefiro fazer uma lógica para vc. Vê se fica melhor:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package guj;

import java.util.Arrays;

/**
 *
 * @author Administrador
 */
public class ExercicioArrays
{

    public static void main(String[] args)
    {

        //controla a quantidade de indices
        int indice = 0;

        //cria os dois vetores
        int[] vet1 =
        {
            1, 2, 3, 4, 5
        };
        int[] vet2 =
        {
            5, 6, 7, 8, 9
        };

        /**
         * Cria-se o vetor que irá receber os valores dos dois anteriores.
         * Note que o tamanho desse vetor tem que ser a soma da quantidade de posições dos outros.
         */
        int[] vet3 = new int[vet1.length + vet2.length];

        //tirando a prova dos nove
        System.out.println("O vetor vet1 tem " + vet1.length + " posicoes e o vetor vet2 tem " + vet2.length + " posicoes. Portanto o vet3 terá " + vet3.length + " posicoes.");

        //fazendo o preechimento
        for (int i = 0; i < vet1.length; i++)
        {
            vet3[indice] = vet1[i];
            indice++;
        }

        for (int i = 0; i < vet2.length; i++)
        {
            vet3[indice] = vet2[i];
            indice++;
        }

        //exibe o terceiro vetor preenchido com os dois anteriores
        for (int i = 0; i < vet3.length; i++)
        {
            System.out.println(vet3[i]);
        }

    }
}
Se não tiver entendido alguma coisa é só falar!

Abraços!

Cara vlw , obrigado tudo certinho.

pvrsouza

Disponha!!

Criado 14 de junho de 2010
Ultima resposta 15 de jun. de 2010
Respostas 3
Participantes 2