import java.util.Scanner;
import javax.swing.JOptionPane;
public class Agenda {
static Scanner console = new Scanner(System.in);
// COMEÇO METODO ENTRADA
private static int Entrada(String[] vetor) {
int fim;
do {
fim = Integer.parseInt(JOptionPane.showInputDialog("Quantos contatos deseja adicionar (MAX: 10) ?"));
} while ((fim <= 0) || (fim > 10));
for (int i = 0; i < fim; i++) {
vetor[i] = JOptionPane.showInputDialog("Contato " + (i + 1));
}
return fim;
}
// FIM METODO ENTRADA
// COMEÇO METODO INSERIR
private static int Inserir(String[] vetor, int fim, int posicao, String contato) {
posicao = posicao - 1;
if (fim == 10) {
JOptionPane.showMessageDialog(null, "Não há espaço em sua agenda !");
} else if ((posicao < 0) || (posicao > fim)) {
JOptionPane.showMessageDialog(null, "Posição inexistente !");
} else {
for (int i = fim - 1; i >= posicao; i--) {
vetor[i + 1] = vetor[i];
}
vetor[posicao] = contato;
fim = fim + 1;
JOptionPane.showMessageDialog(null, "Inserido com sucesso!");
}
return fim;
}
// FIM METODO INSERIR
// COMEÇO METODO ACESSAR
private static String Acessar(String[] vetor, int fim, int posicao) {
String contato;
if ((posicao < 0) || (posicao > fim)) {
contato = "";
} else {
contato = vetor[posicao - 1];
}
return contato;
}
// FIM METODO ACESSAR
// COMEÇO METODO REMOVER
private static int Remover(String[] vetor, int fim, int posicao) {
String contato = "";
posicao = posicao - 1;
if (fim == 0) {
JOptionPane.showMessageDialog(null, "Não há contatos em sua agenda");
}
if ((posicao < 0) || (posicao > fim))
JOptionPane.showMessageDialog(null, "Posição inválida");
else {
contato = vetor[posicao];
for (int i = posicao; i < fim - 1; i++) {
vetor[i] = vetor[i + 1];
}
fim = fim - 1;
JOptionPane.showMessageDialog(null, "Remoção efetuada com sucesso! O contato removido da lista foi : " + contato);
}
return fim;
}
// FIM METODO REMOVER
// COMEÇO METODO LISTAR
private static void Listar(String[] vetor, int fim) {
String list = "";
for (int i = 0; i < fim; i++) {
list = list + "\n " + (i + 1) + " - " + vetor[i];
}
JOptionPane.showMessageDialog(null, list);
}
// FIM METODO LISTAR
// COMEÇO METODO LISTAR POR LETRA
private static String ListarLetra(String[] vetor, int fim, String aux) {
String filt = JOptionPane.showInputDialog("Deseja filtrar por qual letra ? ");
for (int i = 0; i < fim; i++) {
String letra = vetor[i].substring(0, 1);
if (letra.equals(filt))
aux = (i+1) + "-" +vetor[i] +"\n" + aux;
}
return aux;
}
// FIM METODO LISTAR POR LETRA
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] vetor = new String[10];
String contato, filtro, comp;
int opcao, fim = Entrada(vetor), posicao;
do {
do {
opcao = Integer.parseInt(JOptionPane.showInputDialog("Suas opções são :" + " \n \n 1 - Acessar\n"
+ "2 - Inserir\n" + "3 - Remover\n" + "4- Listar\n" + "5 - Listar Por Inicial\n" + "6 - Sair"));
} while ((opcao < 1) || (opcao > 6));
switch (opcao) {
case 1:
posicao = Integer.parseInt(JOptionPane.showInputDialog("Qual a posição do que contato deseja acessar"));
contato = Acessar(vetor, fim, posicao);
if (contato == "")
JOptionPane.showMessageDialog(null, "Não há contatos nesta posição !");
else
JOptionPane.showMessageDialog(null, "O contato da posição " + (posicao) + " é : " + contato);
break;
case 2:
posicao = Integer.parseInt(JOptionPane.showInputDialog("Em qual a posição deseja inserir ?"));
contato = JOptionPane.showInputDialog("Insira o contato : ");
fim = Inserir(vetor, fim, posicao, contato);
break;
case 3:
String list = "";
for (int i = 0; i < fim; i++) {
list = list + "\n " + (i + 1) + " - " + vetor[i];
}
posicao = Integer.parseInt(JOptionPane.showInputDialog("Qual contato deseja remover\n \n" + list));
fim = Remover(vetor, fim, posicao);
break;
case 4:
Listar(vetor, fim);
break;
case 5:
String aux="";
String la = ListarLetra(vetor, fim, aux);
JOptionPane.showMessageDialog(null, la);
break;
}
} while (opcao != 6);
console.close();
}
}
Arrays.sort(nomeDoArray);
Cara mas já tentei e não consigo, importei o java arrays tudo bonitinho Soq não vai de jeito nenhum…
Na hora que o programa vai executar a linha contendo esse comando ele fecha na hora meu JOptionPane …
Será que tem um lugar certo pra por ele ?
Claro que vai! Você perguntou: como ordenar um vetor (ou array) de Strings, e a resposta é essa:
String[] letras = {"d", "b", "c", "a"};
Arrays.sort(letras);
System.out.println(Arrays.toString(letras));
// imprime [a, b, c, d]
Agora, você tá misturando código de UI com lógica de negócio. O fato de você ordenar o array não tem nada a ver com o que aparece na tela.
Tente atualizar a tela depois de ordenar o array, se você quer que a mudança apareça.
Valeu cara ajudou muito !
Essa maneira que encontrei para organizar além do sort !
String aux = “”;
for (int x = 0; x < fim; x++)
for (int y = 0; y < fim; y++) {
if (vetor[x].charAt(0) < vetor[y].charAt(0)) {
aux = vetor[y];
vetor[y] = vetor[x];
vetor[x] = aux;
}
Dá na mesma, com uma diferença: o Collections.sort
é muito mais eficiente. Esse algoritmo que você fez é O(nˆ2)
, enquanto o Collections.sort
é O(n*lg(n))
no pior caso, mas caso o vetor já esteja quase ordenado, é O(n)
.