Java - Programa de teste de Classes Dinâmico (Erro: ArrayIndexOutOfBoundsException)
Boa noite. Segue o texto do método main:
/*O sistema basicamente faz é pedir informções para o usuário, pergutando quantas pessoas vai cadastrar,
*qual o nome, telefone, se a pessoa trabalha, pede o cargo e a empresa para no final exibir essas informações na tela.
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Quantas pessoas você vai cadastrar? (Somente números)\n");
int pessoas = (int)in.nextInt();
String[] nome = new String[pessoas];
String[] telefone = new String[pessoas];
String[] profissao = new String[pessoas];
String[] empresa = new String[pessoas];
int op = 0;
for(int i=0; i<pessoas; i++) {
System.out.println("\nDigite o nome do serumaninho:\n");
nome[pessoas] = in.toString(); //Tá dando erro aqui, provavelmente por causa da variável dinâmica pessoas
System.out.println("\nDigite o telefone desse serumaninho:\n");
telefone[pessoas] = in.nextLine();
System.out.println("\nEsse vivente trabalha? (0 para não, 1 para sim)\n");
op = in.nextInt();
if(op == 1){
System.out.println("\nDigite a profissão dele:\n");
profissao[pessoas] = in.nextLine();
System.out.println("\nDigite o nome da empresa em que ele trabalha:\n");
empresa[pessoas] = in.nextLine();
}
}
for(int j=0; j<pessoas; j++){
if(op ==1){
Pessoa[] p = {new Profissional(nome[j], telefone[j], profissao[j], empresa[j])};
}
else{
Pessoa[] p2 = {new Pessoa(nome[j], telefone[j])};
}
}
for(int h=0; h<pessoas; h++){
if(op==1){
Pessoa[] p = {new Profissional(nome[h], telefone[h], profissao[h], empresa[h])};
System.out.println(Arrays.toString(p));
}
else{
Pessoa[] p2 = {new Pessoa(nome[h], telefone[h])};
System.out.println(Arrays.toString(p2));
}
}
}
//Abaixo estão as classes, que estão em outros arquivos Java.
public class Pessoa {
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome = nome;
}
public String getTelefone(){
return telefone;
}
public void setTelefone(String telefone){
this.telefone = telefone;
}
private String nome;
private String telefone;
Pessoa(String nome, String telefone){
this.nome = nome;
this.telefone = telefone;
}
void exibir(){
System.out.println(getNome()+" :: "+getTelefone());
}
}
//Abaixo a classe Profissional, derivada da classe Pessoa.
public class Profissional extends Pessoa {
private String profissao;
private String empresa;
public String getProfissao(){
return profissao;
}
public void setProfissao(String profissao){
this.profissao = profissao;
}
public String getEmpresa(){
return empresa;
}
public void setEmpresa(String empresa){
this.empresa = empresa;
}
Profissional(String nome, String telefone, String profissao, String empresa){
super(nome, telefone);
this.profissao = profissao;
this.empresa = empresa;
}
@Override
public void exibir(){
super.exibir();
System.out.println("\tTrabalha como "+profissao+"no(a) "+empresa+".");
}
}
Minha dúvida é: como posso corrigir o problema sem tirar a maneira dinâmica do sistema e se da maneira como fiz não irá gerar outros erros ou poderia fazer de uma maneira mais simples.
Desde já agradeço!Discussão (0)
Carregando comentários...