Jump to content
  • 0
laloproces

Java - Programa de teste de Classes Dinâmico (Erro: ArrayIndexOutOfBoundsException)

Question

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!

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Robson Augusto
      Boa noite galera, não tenho conhecimento em programação, o que desenvolvi em meu site atualmente foi através de pesquisas e curiosidade em aprender e modelar site por conta própria.
      Hoje estou com um problema quanto a velocidade do site, muitas JS bloqueando a renderização do site, eu cheguei a tentar jogar todo JS para fim da página "footer", mas algumas páginas se desconfigurarão, então eu gostaria de pedir ajuda a vocês, sobre como eu deixo meu site mais rápido sem desconfigurar as páginas... Ou como adicionar o async dentro dessas funções!?
      Segue o php de chamadas do css e js
       
      <?php
      class CaryAssets
      {
          var $location;
          var $section;
          public function __construct()
          {
              $this->location = Rewrite::newInstance()->get_location();
              $this->section = Rewrite::newInstance()->get_section();
              osc_add_hook('header', array(&$this, 'enqueue_css'), 1);
              osc_add_hook('header', array(&$this, 'enqueue_js'));
          }

          function enqueue_css()
          {
              $location = Rewrite::newInstance()->get_location();
              $section = Rewrite::newInstance()->get_section();
              if ($location === 'user' && in_array($section, array('dashboard', 'profile', 'alerts', 'change_email', 'change_username', 'change_password', 'items'))) {
                  $user = User::newInstance()->findByPrimaryKey(Session::newInstance()->_get('userId'));
                  View::newInstance()->_exportVariableToView('user', $user);
                  ?>
                  <script type="text/javascript">
                      var cary_theme = window.cary_theme || {};
                      cary_theme.user = {};
                      cary_theme.user.id = '<?php echo osc_user_id(); ?>';
                      cary_theme.user.secret = '<?php echo osc_user_field("s_secret"); ?>';
                  </script>
                  <?php
              }
              // osc_enqueue_style('bootstrap', osc_current_web_theme_url() . 'lib/bootstrap/css/bootstrap.min.css');
              // customized bootstrap with 480px @media
              // https://gist.github.com/wdollar/135ec3c80faaf5a821b0
              osc_enqueue_style('bootstrap', osc_current_web_theme_url() . 'css/bootstrap.min.css');

              osc_enqueue_style('font-awesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');
              osc_enqueue_style('bootstrap-social', osc_current_web_theme_url() . 'css/bootstrap-social.css');
              osc_enqueue_style('bxslider-css', osc_current_web_theme_url() . 'lib/bxslider/css/jquery.bxslider.min.css');
              osc_enqueue_style('sweetalert-css', osc_current_web_theme_url() . 'js/sweetalert-master/dist/sweetalert.css');
              osc_enqueue_style('style', osc_current_web_theme_url() . 'css/style.css');
              osc_enqueue_style('style-jquery-ui', osc_current_web_theme_url() . 'lib/jquery-ui/jquery-ui.css');
              osc_enqueue_style('style-animatedModal', '//cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.0/animate.min.css');
              if(Params::getParam('page') === 'item' &&
                  (Params::getParam('action')==='item_add' || Params::getParam('action')==='item_edit')) {
                  osc_enqueue_style('style-jquery-ui', osc_current_web_theme_url() . 'js/alt-checkbox/jquery.alt-checkbox.css');
              }
          }
          function enqueue_js()
          {
              osc_register_script('jquery', osc_current_web_theme_url() . 'lib/jquery/js/jquery-1.12.0.min.js');
              osc_enqueue_script('jquery');
              osc_register_script('jquery-ui', osc_current_web_theme_url() . 'lib/jquery-ui/jquery-ui.js', 'jquery');
              osc_enqueue_script('jquery-ui');
              osc_enqueue_script('php-date');
              osc_register_script('animatedModal', osc_current_web_theme_url() . 'js/animatedModal.js-master/animatedModal.min.js', 'jquery');
              osc_enqueue_script('animatedModal');
              osc_register_script('global-js', osc_current_web_theme_url() . 'js/global.js', 'jquery');
              osc_enqueue_script('global-js');
              osc_register_script('sticky', osc_current_web_theme_url() . 'node_modules/sticky-kit/dist/sticky-kit.js', 'jquery');
              osc_enqueue_script('sticky');
              osc_register_script('bootstrap-js', osc_current_web_theme_url() . 'lib/bootstrap/js/bootstrap.min.js', 'jquery');
              osc_enqueue_script('bootstrap-js');
              osc_register_script('bxslider-js', osc_current_web_theme_url() . 'lib/bxslider/js/jquery.bxslider.min.js', 'jquery');
              osc_enqueue_script('bxslider-js');
              $url = 'https://maps.googleapis.com/maps/api/js?libraries=places';
              if (trim(osc_get_preference('maps_key', 'cary_theme')) != '') {
                  $url = 'https://maps.googleapis.com/maps/api/js?key=' . trim(osc_get_preference('maps_key', 'cary_theme')) . '&libraries=places';
              }
              osc_register_script('gmaps-js', $url);
              osc_register_script('sweetalert-js', osc_current_web_theme_url() . 'js/sweetalert-master/dist/sweetalert.min.js');
              osc_enqueue_script('sweetalert-js');
              if (osc_is_ad_page() && osc_get_preference('include_maps_js', 'cary_theme')) {
                  osc_enqueue_script('gmaps-js');
              }
              osc_register_script('delete-user-js', osc_current_web_theme_js_url('delete_user.js'), 'jquery-ui');
              if (($this->location === 'user' &&
                      in_array($this->section, array('dashboard', 'profile', 'alerts', 'change_email', 'change_username', 'change_password', 'items')))
                  || (Params::getParam('page') === 'custom' && Params::getParam('in_user_menu') == true)
              ) {
                  osc_enqueue_script('delete-user-js');
              }
              if(Params::getParam('page') === 'item' &&
                  (Params::getParam('action')==='item_add' || Params::getParam('action')==='item_edit')) {
                  osc_register_script('alt-checkbox-js', osc_current_web_theme_url() . 'js/alt-checkbox/jquery.alt-checkbox.js');
                  osc_enqueue_script('alt-checkbox-js');
              }
          }
      }
       
    • By eduardarbal
      Não preciso mais.
    • By clecio10
      Olá pessoal sou novo no fórum e gostaria da ajuda de vocês na resolução de um exercício de estrutura de dados, não estou sabendo como implementar os métodos com base nas perguntas do exercício. Por favor, quem puder ajudar eu agradeço de coração!
       
      Enunciado:   1. Implemente o método compareTo(Object o) da classe Item ; 2. Implemente a lista duplamente encadeada para a atender a interface ILista ; 3. Implemente a lista simplesmente encadeada circular para a atender a interface ILista ; 4. Implemente a lista duplamente encadeada circular para a atender a interface ILista ;   interface ILista { /** * Adiciona um elemento na lista * * @param dado Elemento a ser adicionado * @throws ListaException Erro caso não tenha mais espaço disponível. */ void adicionar(Item dado) throws ListaException; /** * Remove um item da lista * * @param chave informar a chave de busca do item * @throws ListaException Erro caso não tenha o item informado. */ void remover(Comparable chave) throws ListaException; /** * Caso a chave seja encontrada, retorna verdadeiro * * @param chave * @return */ boolean contem(Comparable chave) throws ListaException; /** * Retorna a quantidade de elementos * * @return a quantidade de elementos */ int getQtd(); /** * Adiciona a outra lista no final da lista. * * @param outralista a outra lista a ser somada. */ void AdicionarNoFinal(ILista outralista) throws ListaException; /** * Adiciona a outra lista no final da lista. * * @param outralista a outra lista a ser somada. */ void AdicionarNoFinal(Item[] outralista) throws ListaException; /** * Adiciona a outra lista após o item chave existente na lista. * * @param outralista a outra lista a ser somada. * @param chaveDoItemDoMeio elemento chave que antecederá a outra lista */ void AdicionarNoMeio(Comparable chaveDoItemDoMeio, ILista outralista) throws ListaException; /** * Retorna outra lista com os elementos existentes da lista. * * @param posicaoInicial posição inicial da lista a ser copiada. * @param posicaoFinal posição final da lista que deve ser copiada. */ Item[] getSubLista(int posicaoInicial, int posicaoFinal) throws ListaException; /** * Retorna a quantidade de elementos que são iguais ao informado no parâmetro. * * @param item elemento de comparação. */ int getQtdElementos(Item item) throws ListaException; /** * Remove os itens duplicados * * @throws ListaException */ void removerDuplicados() throws ListaException; } public class Item implements Comparable { private Comparable chave; private Object informacaoCompleta; public Item() { } public Item(Comparable chave) { this(); this.chave = chave; this.informacaoCompleta = chave; } public Item(Comparable chave, Object dado) { this(chave); this.informacaoCompleta = dado; } public Object getInformacaoCompleta() { return informacaoCompleta; } public void setInformacaoCompleta(Object informacaoCompleta) { this.informacaoCompleta = informacaoCompleta; } public Comparable getChave() { return chave; } public void setChave(Comparable chave) { this.chave = chave; } // Implementar o método compareTo public int compareTo(Object o) { return 0; } } public class ListaException extends Exception { public ListaException(String msg) { super(msg); } }
    • By Falcon33
      [INICIANTE]
      Boa tarde pessoal, estou com problemas para terminar o seguinte código. 
      Preciso adicionar os seguintes procedimentos.
      1.     Utilizar vetores e/ou matrizes;
      2.     Utilizar estruturas de repetição;
      3.     Implementar utilizando modularização (no mínimo um módulo de procedimento e dois módulos de ação);
      4.     Utilizar passagem de parâmetro por valor e referência;
      5.     Utilizar registros;
      6.     Utilizar alocação dinâmica de memória;
       
      Alguém poderia dar uma luz? 
       
      Já fiz o seguinte: 
      //Projeto: Calculo de PI por Monte Carlo. Adotando o intervalo entre [0,1]. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> int main(){ double px,py,deltax,deltay,DistEuc,Valor_pi; int Npont_quad = 10000000; int dentro_circ = 0; int i; srand(time(NULL)); for(i = Npont_quad; i > 0; i--){ //Estrutura de repetição para gerar pontos aleatorios. px = rand() / (double)RAND_MAX; //Primeiro numero sorteado entre 0 e 1. py = rand() / (double)RAND_MAX; //Segundo numero sorteado entre 0 e 1. deltax = pow((px- 0.5),2); //Calculo do cateto x da hipotenusa. deltay = pow((py - 0.5),2); //Calculo do cateto y da hipotenusa. DistEuc = sqrt(deltax + deltay); //Calculo da distancia euclidiana(distancia entre os pontos) if (DistEuc <= 0.5){ //Determinar quais pontos estão dentro do circulo dentro_circ++; } } Valor_pi = 4 * dentro_circ / (double) Npont_quad; //Obtenção do valor de PI. printf("O valor de PI eh: %lf", Valor_pi); //Imprimir o valor de PI. }  
    • By mikemaccav
      /* Desenvolva um programa que entre com nome e uma matrícula. Seu programa deve validar o nome e a matrícula. Olá a todos. Criei esse código e consegui executar a primeira tela. Mas preciso VALIDAR o Nome e a Matrícula e dá erro. Desde já agradeço. */ package br.com.ead.matricula; import javax.swing.JOptionPane; import javax.swing.JTextField; public class AlunoTeste2 { public static void main(String[] args) { JTextField nome = new JTextField(); JTextField matricula = new JTextField(); Object[] escola = { "Nome:", nome, "Matrícula:", matricula, }; JOptionPane.showConfirmDialog(null, escola,"Validação de Alunos- PROJEÇÃO", JOptionPane.OK_CANCEL_OPTION); ------------------------------------------------------------ A seguir criei esse código para tentar validar os campos mas não consigo "amarrar" os códigos, segue: if(escola == null) { JOptionPane.showMessageDialog(null, "Você pressionou CANCEL"); } if (escola!=null) { try { int matricula = Integer.parseInt(escola); if (matricula>=200010000 && matricula<202000000) { JOptionPane.showMessageDialog(null, "Matrícula Confere "+"\n"+matricula); } else { JOptionPane.showMessageDialog(null, "Matrícula errada!"); } }catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "Entrada Errada"); } }  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.