Dúvida em Exercício com Array

4 respostas
Igor_Cordeiro

Considere que tenhamos duas listas de nomes de pessoas, sedo que estas listas já estão em ordem lexicográfica (alfabética). Desejamos juntar estas duas listas numa única, mantendo a ordem alfabética.

Nos dados de entrada, cada linha contém o nome de uma pessoa. Na primeira linha está o tamanho da primeira lista, seguida dos nomes das pessoas desta lista. Em seguida vem outra linha com o tamanho da segunda lista, seguida dos nomes das pessoas da segunda lista.

Meu Algoritmo:

import java.util.Scanner;

public class JuntarNomes {
    public static void main (String args []) {
        Scanner sc = new Scanner (System.in);
        int tamanhoLista1 = sc.nextInt();
        String[] lista1 = new String [tamanhoLista1];
        }
        int tamanhoLista2 = sc.nextInt();
        String [] lista2 = new String [tamanhoLista2];
    
        System.out.println (juncaodenomes(lista1, lista2));
    }
    public static String juncaodenomes (String[] lista1, String [] lista2) {
        
            String resultado = {Não sei o que fazer aqui para juntar as suas Listas, conforme o exercício}
    
                
            return resultado;
        }
        
    }

4 Respostas

Mateus_Malaquias1

Só uma dúvida minha pra responder sua questão, tem corrigir esse código usando vetor ou você já conhece ArrayList?

Igor_Cordeiro

Podes me ajudar usando Vetor?

B

Fiz usando vetor:

public static void main(String[] args) {
	Scanner input = new Scanner(System.in);
	int tam_lista1, tam_lista2;
	System.out.print("Informe o tamanho da lista 1: ");
	tam_lista1 = input.nextInt();
	System.out.print("Informe o tamanho da lista 2: ");
	tam_lista2 = input.nextInt();
	
	String[] lista1 = new String[tam_lista1];
	String[] lista2 = new String[tam_lista2];
							
	System.out.println("Lista 1:");
	for(int i = 0; i < lista1.length; i++){
		System.out.print("Informe o " + (i+1) + "º nome: ");
		lista1[i] = input.next();
	}
	
	System.out.println("Lista 2:");
	for(int i = 0; i < lista2.length; i++){
		System.out.print("Informe o " + (i+1) + "º nome: ");
		lista2[i] = input.next();
	}
	
	
	System.out.println("Lista Geral:");
	for(int i = 0; i < lista1.length; i++){
		System.out.println(lista1[i]);
	}
	for(int i = 0; i < lista2.length; i++){
		System.out.println(lista2[i]);
	}
			
	
}
diego.drss

@Brugger, me baseei no seu código mas pesquisei como juntar os 2 vetores em 1 só, que me parece ser um dos objetivos do exercício. Achei aqui mesmo no fórum essa dica e fiz a alteração. Veja:

public static void main(String[] args) {

Scanner input = new Scanner(<a href="http://System.in">System.in</a>);

int tam_lista1, tam_lista2;

System.out.print("Informe o tamanho da lista 1: ");

tam_lista1 = input.nextInt();

System.out.print("Informe o tamanho da lista 2: ");

tam_lista2 = input.nextInt();
String[] lista1 = new String[tam_lista1];
	String[] lista2 = new String[tam_lista2];
	String[] lista3 = new String[lista1.length + lista2.length]; //lista com tamanho = soma das listas
							
	System.out.println("Lista 1:");
	for(int i = 0; i < lista1.length; i++){
		System.out.print("Informe o " + (i+1) + "º nome: ");
		lista1[i] = input.next();
	}
	
	System.out.println("Lista 2:");
	for(int i = 0; i < lista2.length; i++){
		System.out.print("Informe o " + (i+1) + "º nome: ");
		lista2[i] = input.next();
	}
	
	input.close(); //fechei o scanner
	
            //copiando lista1 e lista2 para lista3:
	System.arraycopy(lista1, 0, lista3, 0, lista1.length);
	System.arraycopy(lista2, 0, lista3, lista1.length, lista2.length);
	
	System.out.println("Lista Geral:");
	for (int i = 0; i < lista3.length; i++){
	     System.out.println(lista3[i]);
	}

}

saída:
Informe o tamanho da lista 1: 3
Informe o tamanho da lista 2: 5
Lista 1:
Informe o 1º nome: aa
Informe o 2º nome: bb
Informe o 3º nome: cc
Lista 2:
Informe o 1º nome: a
Informe o 2º nome: b
Informe o 3º nome: c
Informe o 4º nome: d
Informe o 5º nome: e
Lista Geral:
aa
bb
cc
a
b
c
d
e

Contudo, ao que me parece, ainda fica faltando resolver o lance de manter a ordem alfabética. Só vi um modo de fazer isso usando ArrayList. Se a nova lista tiver mesmo que juntar as 2 anteriores e organizar de forma alfabética, então com vetor fica complicado.

Criado 28 de junho de 2016
Ultima resposta 29 de jun. de 2016
Respostas 4
Participantes 4