Criando um terceiro vetor a partir de dois vetores

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] + ", ");
        }
    }
}

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:

[code]/*

  • 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]);
     }
    

    }
    }
    [/code]
    Se não tiver entendido alguma coisa é só falar!

Abraços!

1 curtida

[quote=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:

[code]/*

  • 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]);
     }
    

    }
    }
    [/code]
    Se não tiver entendido alguma coisa é só falar!

Abraços!

[/quote]

Cara vlw , obrigado tudo certinho.

Disponha!!