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 mamotinho
      Boa noite! estou com dúvidas em relação a array, eu tenho uma procedure no SQL Server e essa procedure exibe uma lista de resultados, eu gostaria de pega o valor desses resultados e lista em um array para eu comparar com outro valor que vai ser selecionado em um select , tipo abaixo:
       
      $arraySelect = $db->prepare(exec WebSite.dbo.server_value_product 2);
      $arraySelect->execute();
      $arrayExemple = $arraySelect->fetchAll();

      procedure_list = array($arrayExemple);
       
      !in_array($valorSelect, $procedure_list){
         echo 'O Valor selecionado não existe nos resultados da procedure';
      }
       
       
      alguem sabe como posso listar o resultado da procedure em array. e sabe se o valor que procuro está entre os resultados da array.
    • By kaayasinho
      Boa tarde Pessoal tudo bom?
      Durante um tempo eu fui estudante de programação, para web. E esse forum me foi muito util pois aprendi muitas coisas, e tirei muitas duvidas com todos os participantes. Por outro lado não segui a carreira de programado pois tive outras oportunidades.
       
      Em fim, estou com um projeto de criar uma plataforma online para eventos, e estou tentando montar um time chegar nesse objetivo. Por hora ainda estou tentando juntando a equipe necessária para isso acontecer.
       
      Pela pouca experiência que tive na programação, sei que fazer essa plataforma é bem complexa principalmente com as necessidades que vamos englobar, porém o mercado esta escasso de plataformas flexíveis, no sentido de oferecer algumas ferramentas básicas na comunicação. apesar de ja existir algumas plataformas no mercado.
       
      Resumo:
      1-) Procuro por programadores backend com experiência (não sei exatamente informar a linguagem) mas chuto que Java, Javascript e PHP sejam fundamentais. (sei que abusaremos muito do AJAX)
       
      2-) Programador FrontEnd, com experiência. E que tenha principalmente em boas praticas, pois código sujo cheio de plugins tornará a plataforma pesada, e cheia de bugs.
       
      PS: Não procuro nada pronto, claro que plugins coisas são inevitáveis porém para funcionarmos Lisos com menos bugs possíveis procuro algo feito “artesanalmente” rsrs.
       
      Obs: o projeto esta no inicio ainda, estou juntando contatos para chegar no objetivo, e assim que tiver um contato gostaria de poder conversar trocar ideias, caso seja um projeto onde você se identifique nada impede de sermos parceiros ter uma % sobre o negocio.
       
       
      Obs2: Desculpem se escrevi meio enrolado ou esta complicado de entender. pois apenas disse plataforma de eventos e não especifiquei nada. mas assim que receber um contato eu passo mais informações com alguns links de exemplos, que é melhor que falar.
       
      E caso aqui seja o lugar correto posso passar mais informações por aqui também.
       
      Seguem alguns exemplos de plataforma de eventos online.
      Download de 2 PDFs de apresentações do mesmo segmento
       
      Site de uma das plataformas porém proximo do que almejamos
      https://www.swaper.com.br/
       
       
      Fico a disposição,
       
      Desculpem se postei no local incorreto
       
    • By eiwes
      Fiz uma iteração foreach para gerar categorias e subcategorias, pois não queria fazer DOIS SELECTS, ficando assim:
       
      //----> Foreach para gerar a categoria, pois são vários items com as mesmas chaves, portanto agrupo foreach($exibeLista as $row){ $dlD[$row["nameD"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } //----> Foreach para gerar subcategorias foreach($exibeLista as $row){ $dLA[$row["nameP"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "idAss"=>$row["idAss"], "idT"=>$row["idT"], "nameP"=>$row["nameP"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } $fsHTML = []; $rateD = 0; $qtdAss = 0; if(is_array($dlD) || is_object($dlD)){ foreach ($dlD as $key => $ds) { if ($key <> '' && $key <> NULL) { $rateD += (($ds[0]["qtdR"]*100)/$ds[0]["qtdF"]); $qtdAss += count($dlD[$key]); //----> Array para inserir HTML da Categoria criada e criar accordion $fsHTML[] = ' <div class="col-md-12 col-sm-12 col-xs-12"> <div class="x_panel overflow_hidden padding-into-row-qsts bg-white-row filtro-on"> <span class="rateD">'.ceil($rateD/$qtdAss).'%</span> <span class="opcao-into-top">'.$ds[0]["idD"].' - '.$ds[0]["nameD"].' <a class="collapse-link open-filter-qsts border-radius8"><i class="fa fa-chevron-up"></i></a></span> <div class="x_content" style="display:none;padding-top:10px"> <div class="accordion" id="accordion" role="tablist" aria-multiselectable="true"> '; //----> Verificar se a subcategoria contém a categoria, se contém é incluída na array foreach ($dLA as $keys => $ass) { if($ass[0]["idD"] == $ds[0]["idD"] ){ if($ass[0]['idT'] <> 0){ $link = 't='.$ass[0]['idT']; }else{ $link = 'a='.$ass[0]['idAss'];} $fsHTML[] = ' <div class="panel"> <a class="panel-heading collapsed" href="/v/fs/st?mz=y&type=c&'.$link.'"> <span class="eficiencia-accordion">'.ceil(($ass[0]['qtdR']*100)/$ass[0]['qtdF']).'%</span> <h4 class="panel-title">'.$ass[0]['nameP'].'</h4> <span class="unicamente">'.$ass[0]['qtdR'].' respondido de '.$ass[0]['qtdF'].'</span> </a> </div> '; }//if ass }//foreach ass }//if ds //----> Aqui é aonde ocorre o ERRO! Era pra fazer o fechamento do Accordion e gerar uma nova DIV. //No índice [0] isso ocorre normalmente, porém no [1] ela agrupa todos os accordions. (abaixo farei a amostra) $fsHTML[] = '</div></div></div></div>'; }//foreach ds }//if verifica se é array e se é objeto return implode('', array_unique($fsHTML)); O correto seria assim:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
       - Subcategoria
       - Subcategoria
       
       
      Como está acontecendo:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
        - Subcategoria
        - Subcategoria
          - Categoria
            - Subcategoria
            - Subcategoria
              - Categoria
                - Subcategoria
                - Subcategoria
                  - Categoria
                    - Subcategoria
                    - Subcategoria
       
       
      Não consigo entender de jeito nenhum pq o primeiro fecha corretamente e a partir do segundo não.
      Alguém me ajuda?
       
       
    • By jrxxjr
      Sou iniciante em Android, e fiz uma pequena aplicação Android de teste, usando Java, para aprender a utilizar um ListView com botões, e tive um problema. Os botões não funcionam direito, as vezes eu clico em cima do Edit, ele muda a mensagem para clicado, "Edit", confirmando que eu cliquei ai. Mas tem vezes que eu clico no botão Delete, e depois no botão Edit, e o texto não é mudado, ou seja o evento click não funcionou, se eu coloco um break point, no código-fonte, onde está entrando no evento setOnItemClickListener. Mas a mensagem exibida, não está correta.
      E tem um outro erro, de funcionamento do AlertDialog, da mensagem de confirmação de deleção.
      O código-fonte está abaixo.
      Por favor, alguém poderia me ajudar ?
       
      AgendaActivity.java
      package com.test.android.view; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.test.android.model.Agenda; import com.test.android.util.Util; public class AgendaActivity extends AppCompatActivity { ListView listview; MyArrayAdapter agendaArrayAdapter; ArrayList<AgendaTo> agendaArray = new ArrayList<AgendaTo>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_agenda); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Nick", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("John", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Anthony", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("James", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Jack", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()), Util.fillSpaces("Jeremy", 50))); agendaArray.add(new AgendaTo(sdf.format(new Date()),Util.fillSpaces("Long", 50))); agendaArrayAdapter = new MyArrayAdapter(AgendaActivity.this, R.layout.list_item, agendaArray); listview = (ListView) findViewById(R.id.listView); listview.setItemsCanFocus(false); listview.setAdapter(agendaArrayAdapter); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, final int position, long id) { Toast.makeText(AgendaActivity.this, "List Item Clicked:" + position, Toast.LENGTH_LONG) .show(); } }); } } MyArrayAdapter.java
      package com.test.android.view; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.ArrayList; public class MyArrayAdapter extends ArrayAdapter<AgendaTo> { Context context; int layoutResourceId; ArrayList<AgendaTo> agendas = new ArrayList<AgendaTo>(); public MyArrayAdapter(Context context, int layoutResourceId, ArrayList<AgendaTo> agendas) { super(context, layoutResourceId, agendas); this.layoutResourceId = layoutResourceId; this.context = context; this.agendas = agendas; } @Override public View getView(int position, View convertView, ViewGroup parent) { View item = convertView; AgendaWrapper agendaWrapper = null; if (item == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); item = inflater.inflate(layoutResourceId, parent, false); agendaWrapper = new AgendaWrapper(); agendaWrapper.nome = (TextView) item.findViewById(R.id.textNome); agendaWrapper.data = (TextView) item.findViewById(R.id.textData); agendaWrapper.edit = (Button) item.findViewById(R.id.btnEdit); agendaWrapper.delete = (Button) item.findViewById(R.id.btnDelete); item.setTag(agendaWrapper); } else { agendaWrapper = (AgendaWrapper) item.getTag(); } AgendaTo agenda = agendas.get(position); agendaWrapper.nome.setText(agenda.getNome()); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); agendaWrapper.data.setText(sdf.format(agenda.getData())); agendaWrapper.edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "Edit", Toast.LENGTH_LONG).show(); } }); final int absolutePsition = position; final AgendaWrapper itemDelete = agendaWrapper; final ViewGroup viewGroup = parent; agendaWrapper.delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "Delete " + absolutePsition, Toast.LENGTH_LONG).show(); AlertDialog diaBox = AskOption(itemDelete, absolutePsition, viewGroup); diaBox.show(); } }); return item; } private AlertDialog AskOption(AgendaWrapper agendaWrapper, int position, final ViewGroup viewGroup) { final int deletePosition = position; AlertDialog myQuittingDialogBox = new AlertDialog.Builder(context) .setTitle("Delete") .setMessage("Do you want to Delete") .setPositiveButton("Delete", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { agendas.remove(deletePosition); refreshListView(agendas, viewGroup); dialog.dismiss(); } private void refreshListView(final ArrayList<AgendaTo> agendas, final ViewGroup viewGroup) { final MyArrayAdapter myArrayAdapter = new MyArrayAdapter(context, R.layout.list_item, agendas); final LayoutInflater inflater = ((Activity) context).getLayoutInflater(); final View view = inflater.inflate(layoutResourceId, viewGroup, false); final ListView listview = (ListView) view.findViewById(R.id.listView); listview.setAdapter(myArrayAdapter); } }) .setNegativeButton("cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create(); return myQuittingDialogBox; } static class AgendaWrapper { TextView nome; TextView data; Button edit; Button delete; } } list_item.xml
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="4dp" tools:context=".AgendaActivity" > <TextView android:id="@+id/textNome" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Nome:" android:width="50dp" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textData" android:layout_alignTop="@id/textNome" android:layout_alignRight="@id/textNome" android:layout_alignParentLeft="true" android:layout_marginTop="5dp" android:width="50dp" android:text="Data:" android:textAppearance="?android:attr/dateTextAppearance" android:textSize="16sp" /> <Button android:id="@+id/btnEdit" android:layout_width="80dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="#99CC" android:focusable="false" android:focusableInTouchMode="false" android:text="Edit" android:textColor="#FFFFFF" /> <Button android:id="@+id/btnDelete" android:layout_width="80dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_below="@+id/btnEdit" android:layout_marginTop="3dp" android:background="#99CC" android:focusable="false" android:focusableInTouchMode="false" android:text="Delete" android:textColor="#FFFFFF" /> </RelativeLayout> activity_agenda.xml
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#990044" tools:context="com.test.android.view.AgendaActivity" > <TextView android:id="@+id/listLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="Touch List" android:textColor="#FFFFFF" android:textSize="25sp" /> <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/listLabel" android:layout_marginTop="5dp" android:cacheColorHint="#FFFFFF" /> </RelativeLayout>  
    • By Alisson Hoepers
      Olá! Estou recebendo esse erro no meu log do Wildfly, procurando pela internet não encontrei nada em relação a isso, vejam abaixo o erro:
       
      2020-07-08 00:09:34,699 ERROR [io.undertow.request] (default I/O-4) UT005071: Undertow request failed HttpServerExchange{ CONNECT ext.baidu.com:443}: java.lang.IllegalArgumentException: UT000068: Servlet path match failed     at io.undertow.servlet.handlers.ServletPathMatchesData.getServletHandlerByPath(ServletPathMatchesData.java:83)     at io.undertow.servlet.handlers.ServletPathMatches.getServletHandlerByPath(ServletPathMatches.java:88)     at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:146)     at io.undertow.server.handlers.HttpContinueReadHandler.handleRequest(HttpContinueReadHandler.java:65)     at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:91)     at org.wildfly.extension.undertow.Host$OptionsHandler.handleRequest(Host.java:399)     at io.undertow.server.handlers.HttpContinueReadHandler.handleRequest(HttpContinueReadHandler.java:65)     at org.wildfly.extension.undertow.Host$AcmeResourceHandler.handleRequest(Host.java:421)     at org.wildfly.extension.undertow.Host$HostRootHandler.handleRequest(Host.java:430)     at io.undertow.server.handlers.NameVirtualHostHandler.handleRequest(NameVirtualHostHandler.java:54)     at io.undertow.server.handlers.error.SimpleErrorPageHandler.handleRequest(SimpleErrorPageHandler.java:78)     at io.undertow.server.handlers.CanonicalPathHandler.handleRequest(CanonicalPathHandler.java:49)     at org.wildfly.extension.undertow.Server$DefaultHostHandler.handleRequest(Server.java:190)     at io.undertow.server.handlers.ChannelUpgradeHandler.handleRequest(ChannelUpgradeHandler.java:211)     at io.undertow.server.protocol.http2.Http2UpgradeHandler.handleRequest(Http2UpgradeHandler.java:102)     at io.undertow.server.handlers.DisallowedMethodsHandler.handleRequest(DisallowedMethodsHandler.java:61)     at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)     at io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:255)     at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:136)     at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:162)     at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:100)     at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:57)     at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)     at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:291)     at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:286)     at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)     at org.xnio.nio.QueuedNioTcpServer$1.run(QueuedNioTcpServer.java:132)     at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:612)     at org.xnio.nio.WorkerThread.run(WorkerThread.java:479) Alguém já passou por isso ou saberia indicar o que poderia ser?
×

Important Information

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