Existem várias possibilidades para o uso de arrays. Elaborei um exemplo para demonstrar a utilização aplicando sobre um cadastro de clientes. Objetivo deste exemplo é mostrar uma maneira de utilizar array com Java.
Para saber o que é um array veja a definição da Wikipédia sobre array. Os principais pontos que devem ser observados para entender o uso de Array em Java na minha opinião são:
- Um array em Java precisa ser declarado usando os colchetes ( [ ] );
- O caso mais comum do uso de array requer que este seja inicializado (alocar memória) e neste momento, deve-se informar o seu tamanho; Ex. String[] listaClientes = new String[quantidade];
- Para acessar os dados do array basta usar os colchetes, seguido por seu índice. Ex. listaClientes[i] = JOptionPane.showInputDialog("Nome do cliente "+(i+1));
- Quando um array for criado na memória ele será inicializado com valores default do tipo de dados conforme o tipo de sua declaração. Ou seja, um array de tipo String terá valor null em cada elemento disponível até que seja atribuído outro valor String. Se for tipo primitivo int, o valor default é 0 (zero) para cada elemento; float será 0.0 e assim sucessivamente;
- Para determinar o tamanho do array de forma dinâmica devemos usar o atributo length. Ex. listaClientes.length
- Para recuperar os valores devemos usar o seu índice. Veja a ilustração acima. Ex. listaClientesTemporario += listaClientes[i] + "\n"
import javax.swing.JOptionPane; /** * Esse programa visa exemplificar a utilização de array, aplicando sobre um * cadastro de clientes. * * @author Douglas Daniel Del Frari */ public class CadastroClientes { // array de clientes private static String[] listaClientes; private static String menu = "CADASTRO CLIENTES\n\n" + "1 --> Cadastrar clientes\n" + "2 --> Listar clientes\n" + "3 --> Sair"; /** * Método inicial das aplicações Java SE * @param args argumentos opcionais */ public static void main(String[] args) { // escolha do usuario String opcao = ""; do { opcao = JOptionPane.showInputDialog(menu); if (opcao.equals("1")) { // cadastrar clientes cadastrarClientes(); } else if (opcao.equals("2")) { // listar clientes listarClientes(); } } while (!opcao.equals("3")); // comparacao usando String } // fim do main /** * Lista os clientes cadastrados no ARRAY. */ private static void listarClientes() { if (listaClientes!=null) { // acumula a listagem numa variavel local String listaClientesTemporario = "Lista de Clientes \n\n"; for (int i = 0; i < listaClientes.length; i++) { listaClientesTemporario += listaClientes[i] + "\n"; } // exibe na tela a listagem de clientes JOptionPane.showMessageDialog(null,listaClientesTemporario); } else { // se nao tiver clientes o ARRAY será null, entao pode-se tratar com // uma mensagem personalizada. JOptionPane.showMessageDialog(null, "É necessário realizar cadastro de clientes primeiro"); } } /** * Esse metodo cadastra os usuarios na quantidade * informada pelo usuario. */ private static void cadastrarClientes() { // utiliza o metodo showInputDialog para perguntar a quantidade e // converte o valor de String para inteiro e armazena na variavel // local quantidade. int quantidade = Integer.parseInt(JOptionPane .showInputDialog("Quantos clientes deseja cadastrar?")); // inicializa o ARRAY com tamanho informado pelo usuario listaClientes = new String[quantidade]; // percorre todo tamanho do ARRAY e cadastra seus elementos for (int i = 0; i < quantidade; i++) { listaClientes[i] = JOptionPane.showInputDialog("Nome do cliente "+(i+1)); } JOptionPane.showMessageDialog(null, "Clientes cadastrados"); } } // fim da classe
Considerações
Observe que o exemplo propõe utilizar uma variável global (atributo listaClientes) que é um tipo array de String. Isto porque utilizou-se métodos que são utilizados forá do escopo do método principal (main). Além disso, propomos utilizar uma interface gráfica usando a classe JOptionPane e dois dos seus métodos estáticos (showMessageDialog para exibir dados e showInputDialog para fazer a entrada de dados do usuário).
O array foi inicializado somente após o usuário determinar a quantidade de clientes a ser cadastrada. Assim podemos percorrer o cadastro de cada cliente até o fim do array (ver o método cadastrarClientes()). Se o usuário optar pela visualização da listagem de clientes antes de cadastrar algum cliente, optamos por mostrar uma mensagem para alertar que é necessário realizar o cadastro antes de listar (basta verificar se o array não está nulo - if (listaClientes!=null))
Essa solução não leva em consideração possíveis erros do usuário. Por exemplo, se no momento de informar a quantidade de clientes a ser cadastrada ele colocar um valor que não pode ser convertido para inteiro (ex. um caracter qualquer), teremos um erro de lógica e uma exceção será gerada. Neste caso precisaríamos usar um tratamento de exceção (try/catch).
Questões para debate
- Por que foi utilizado uma variável do tipo String para pegar a opcão de escolha do usuário durante a exibição da menu principal? Qual a diferença se usássemos o tipo inteiro?
- Modularizar o programa em partes menores trás algumas vantagens? Quais?
- O que acontece quando acabar o espaço deste tamanho (quantidade)?
6 comentários:
Foi usado uma variavel do tipo string pq quando se usa o JOpitonpane, ele n retorna um valor inteiro .
por isso deve ser feito em string e dpois a converção. :D
Jefferson POO - FACOL
O Jcreator mostra 4 erros no Cadastro. Não consegui localizar. Me parece que essa linha está errada:for (int i = 0; i <>
listaClientesTemporario += listaClientes[i] + "\n";
Obrigado.
o sintaxe do for é:
for(;;incremento)
portanto, no post (por conta do copy&paste, ficou errado). O correto é:
for (int i=0; i <
for (int i = 0; i < listaClientes.length; i++) {
...
}
Se eu quiser adcionar uma opção de apagar clientes, por exemplo, como faço ?
Para apagar registros pode-se atribuir null para a posição corrente que se deseja apagar. Ex. lista[posicaoApagar] = null;
Me ajudou muito, muito bom!
Postar um comentário