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;
}
}
Só uma dúvida minha pra responder sua questão, tem corrigir esse código usando vetor ou você já conhece ArrayList?
Podes me ajudar usando Vetor?
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]);
}
}
@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(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];
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.