Olá,
Esse programa estava utilizando a classe Vector e estou tentando utilizar a classe ArrayList.
Nao estou conseguindo fazer a parte da busca de informações sobre pessoas através do nome.
Tambem nao entedi no programa que esta usando a classe Vector, esse codigo do programa:
Pessoa p = (Pessoa) pessoas.elementAt(j);
Porque a classe Pessoa esta entre parenteses?
Alguem poderia me ajudar?
Se voces puderem dar algumas sugestoes ou dicas para melhorar o programa, eu agradeço.
import java.util.ArrayList;
import java.util.Scanner;
class Lista {
String nome;
String endereco;
String dataNascimento;
}
class TesteVectorPessoas {
public static void main(String[] args) {
ArrayList l = new ArrayList();
Scanner scan= new Scanner(System.in);
// armazena varias informações sobre uma pessoa
while (true) {
System.out.println("Digite o nome da pessoa a armazenar");
String nome = scan.next();
if (nome.length() == 0) {
break;
}
System.out.println("Digite o endereco da pessoa");
String endereco = scan.next();
System.out.println("Digite a data de nascimento da pessoa");
String dataNascimento = scan.next();
Lista p = new Lista();
p.nome = nome;
p.endereco = endereco;
p.dataNascimento = dataNascimento;
l.add(p);
}
// busca informações sobre pessoas através do nome ???
while (true) {
System.out.println("Digite o nome da pessoa a buscar");
String chave = scan.next();
if (chave.length() == 0) {
break;
}
// buscar as informações sobre a pessoa
boolean encontrado = false;
for (int j = 0; j < l.size(); j++) {
// Lista p = (Lista) l.elementAt(j);
if (l.nome.get(j).equals(chave)) {
System.out.println("Nome:"+p.nome);
System.out.println("Endereco:"+p.endereco);
System.out.println("Nascimento:"+p.dataNascimento);
encontrado = true;
break;
}
}
if (! encontrado) {
System.out.println("Nome não encontrado");
}
}
}
}
O programa que utiliza a classe Vector.
import java.util.Vector;
class Pessoa {
String nome;
String endereco;
String dataNascimento;
}
class TesteVectorPessoas {
public static void main(String[] args) {
Vector pessoas = new Vector();
// armazena varias informações sobre uma pessoa
while (true) {
System.out.println("Digite o nome da pessoa a armazenar");
String nome = IO.readStr();
if (nome.length() == 0) {
break;
}
System.out.println("Digite o endereco da pessoa");
String endereco = IO.readStr();
System.out.println("Digite a data de nascimento da pessoa");
String dataNascimento = IO.readStr();
Pessoa p = new Pessoa();
p.nome = nome;
p.endereco = endereco;
p.dataNascimento = dataNascimento;
pessoas.add(p);
}
// busca informações sobre pessoas através do nome
while (true) {
System.out.println("Digite o nome da pessoa a buscar");
String chave = IO.readStr();
if (chave.length() == 0) {
break;
}
// buscar as informações sobre a pessoa
boolean encontrado = false;
for (int j = 0; j < pessoas.size(); j++) {
Pessoa p = (Pessoa) pessoas.elementAt(j);
if (p.nome.equals(chave)) {
System.out.println("Nome:"+p.nome);
System.out.println("Endereco:"+p.endereco);
System.out.println("Nascimento:"+p.dataNascimento);
encontrado = true;
break;
}
}
if (! encontrado) {
System.out.println("Nome não encontrado");
}
}
}
}
class IO {
private static final short MAX_INPUT_LEN = 256;
private static byte[] bytes = new byte[MAX_INPUT_LEN];
private static char[] caracts = new char[MAX_INPUT_LEN];
public static String readStr () {
for (int i = 0; i < MAX_INPUT_LEN; i++) {
bytes[i] = '\n';
}
try {
// os dados são capturados do teclado
System.in.read(bytes, 0, MAX_INPUT_LEN);
}
catch (Exception e) {
System.out.println(e);
// um string null é retornado em caso de erro
return null;
}
int qtdBytesDigitados = MAX_INPUT_LEN;
// cada um dos bytes é examinado
for (int i = 0; i < MAX_INPUT_LEN; i++) {
// copia os bytes ateh que um caractere de retorno <enter> seja encontrado
if (bytes[i] == '\n') {
qtdBytesDigitados = i;
break;
}
caracts[i] = (char) bytes[i];
}
// um string é criado com os caracteres encontrados até o '\n'
String str = (new String(caracts, 0, qtdBytesDigitados-1));
return str;
}
// retorna um inteiro lido do teclado
public static int readInt() {
// usa a string retornada por readStr(), removendo os caracteres em branco
String str = readStr().trim();
// converte a string para inteiro
return (Integer.parseInt(str));
}
public static short readShort() {
// le um inteiro no teclado e o converte para um short
return (short) readInt();
}
public static double readDouble(){
// usa a string retornada por readStr(), removendo os caracteres em branco
String str = readStr().trim();
// converte a string para ponto flutuante de dupla precisão
return (Double.parseDouble(str));
}
public static float readFloat(){
// lê um double do teclado e o converte para float
return (float)readDouble();
}
public static void readEnter () {
// le um string qualquer até encontrar o enter
readStr();
}
public static void println(String str) {
// atalho para System.out.println
System.out.println(str);
}
public static void println(Object obj) {
// atalho para System.out.println
System.out.println(obj);
}
public static void print(Object obj) {
System.out.print(obj);
}
public static void println(int numero) {
System.out.println(numero);
}
public static void print(int numero) {
System.out.print(numero);
}
public static void main(String[] args) {
println("Testando IO");
println("Digite um string e tecle <enter>");
String s = IO.readStr();
println("O string digitado foi["+s+"]");
println("Digite um inteiro e tecle <enter>");
int i = IO.readInt();
println("O int digitado foi["+i+"]");
println("Digite um short e tecle <enter>");
short sh = IO.readShort();
println("O short digitado foi["+sh+"]");
println("Digite um float e tecle <enter>");
float f = readFloat();
println("O float digitado foi["+f+"]");
println("Digite um double e tecle <enter>");
double d = readDouble();
println("O double digitado foi["+d+"]");
println("Tecle <enter> para encerrar o programa");
readEnter();
println("Fim do teste");
}
}
