Ir ao conteúdo
  • Cadastre-se

Joanderson Pereira

Membro Pleno
  • Posts

    47
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de Joanderson Pereira em Java: Problema com variável de classe foi marcado como solução   
    Temos que lembrar que String é uma coleção de caracteres análoga a ao `Array``:
    Como acontece com os Arrays o índice do primeiro caractere é o 0(zero).
    O índice do último caractere, caso haja caracteres, é o comprimento do String menos 1(um). Isso pois o índice do primeiro caractere é 0, segundo é 1, do terceiro é 2,..., o índice do enésimoelemento(N) é igual a posição ordinal do enésimo elemento menos um, o que no seu exemplo pode ser traduzido com novaString.length() - 1
    De posse da informação de que o índice do último elemento duma String é length() - 1 para remover o último elemento duma Java String dentro do método substring é apenas retirar mais um elemento do comprimento da String:
    novaString.length() - 2 Então o case 63 pode ser reescrito da seguinte forma
    case 63 : // Verifica o comprimento da string para evitar o erro Index out of range(índice fora da faixa) novaString = (novaString.length() >= 2) ? // Caso comprimento seja maior ou igual a dois retorna o substring sem o último elemento. novaString.substring(0, novaString.length() - 2) : //Caso o comprimento seja menor que dois retorna um string vazio. ""; return "] "; Porém esse é apenas um erro no código, se o case 63 fosse chamado esse erro ocorreria, mas não é o que está acontecendo. Percebi que na lógica que usei o programa não está conseguindo formatar o texto adequadamente para os procurar os termos no hashmap, aparentemente apenas os case 62 e 63 não estão sendo chamados. Vou ter que rever a lógica do código para corrigir o problema.
  2. O post de Joanderson Pereira em React: JavaScript e Mongodb foi marcado como solução   
    O problema era um typo.
    O React possui um método chamado componentDidMount que é acessível para componentes escritos em formato de classe. Ele é invocado imediatamente após um componente ser montado (inserido na árvore). Inicializações que exijam nós do DOM devem vir aqui. Se precisar carregar data de um endpoint remoto, este é um bom lugar para instanciar sua requisição.
    Percebi que componetDidMount (conforme digitei) é um componente inexistente do react, ou seja, ele não estava realizando nada. Não havia um erro sintaxe, eu criei um método que não fazia nada, não era uma referência ao método do React. O console.log(response.data) não exibia nenhuma informação.
    O correto é componentDidMount, agora a página exibe as informações que eu quero diretamente do MongoDB, e no console.log aparece o array nos conformes.
    async componentDidMount() { const response = await api.get('posts'); this.setState({ feed: response.data }); console.log(response.data); } O problema era apenas um typo que não me permitia usar o recurso do React. Sou iniciante em programação web e não sabia como depurar o código, algo realmente simples.
    No console: Array(8) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} ].  
  3. O post de Joanderson Pereira em Java: Problemas para fechar um JFrame foi marcado como solução   
    Resolvi, o problema todo estava nessa linha do código:
    new View().setVisible(true); Eu estava chamando o showImputDialog dentro do construtor da classe View, eu pensava que o ato de criar e colocar informações no JFrame o tornava visível. Só que não era bem assim que estava acontecendo.
     
     
    Em View( ) { de new View.setVisible(true);} o construtor da classe é chamado, o compilador "para" apenas para executar as linhas do construtor de View, ou seja, o compilador ainda não chegou em .setVisible(true); 
     
    O comando que exibe a janela na tela é setVisible(true), o que o meu showImputDialog estava fazendo era decidir se as informações da janela seriam carregadas ou não, quando usuário terminava de interagir com o showImputDialog independentemente das informações da janela serem carregadas o compilador continuava a ler a linha {new View.setVisible(true);}. E exibia o que estivesse no JFrame
     
    Ou seja com as informações carregadas ou não, o JFrame era exibido quando chegava em .setVisible(true);
     
    Então eu coloquei o setVisible(true) dentro do construtor da classe View (mas especificamente,dentro do if do showImputDialog), agora a janela só é exibida caso os dois nomes sejam informados, caso contrário o programa retorna para Menu.
     
    //Classe Menu btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { regra1 = true; new View(); } }); btnNewButton.setBackground(UIManager.getColor("FormattedTextField.selectionForeground")); btnNewButton.setForeground(UIManager.getColor("FormattedTextField.selectionForeground")); btnNewButton.setBounds(246, 83, 104, 23); contentPane.add(btnNewButton); btnMelhorDe.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { regra1 = false; new View(); } }); //Construtor da Classe View String nomeJ1 = JOptionPane.showInputDialog(null, "Digite o nome do Jogador 1", "Informação", JOptionPane.PLAIN_MESSAGE); if (nomeJ1 != null) { String nomeJ2 = JOptionPane.showInputDialog(null, "Digite o nome do Jogador 2", "Informação", JOptionPane.PLAIN_MESSAGE); if (nomeJ2 != null) { j1.setNome(nomeJ1); j2.setNome(nomeJ2); Menu.btnNewButton.setEnabled(true); Menu.btnMelhorDe.setEnabled(true); setVisible(true); Menu.btnNewButton.setEnabled(false); Menu.btnMelhorDe.setEnabled(false); P.S: Meus jogadores estão private novamente  
     
    adicionado 25 minutos depois No meu estava errado, só retornava 0, por isso que o jogador um sempre jogava primeiro, eu pensava que era apenas sorte
     
    O código é gerado pelo WindowBuilder, então sim, como eu executava apenas a classe principal (Menu) que chamava as outras não estava dando problemas, não sei se um pontoJar iria dar problema. (Obs agora só tem um método main no código)
     
    Ok, alterei aqui.
     
    Não é correto deixar o compilador lidar com as exceções, como programadores é ideal que tratemos elas (Pelo que entendi).
    Null refere-se a uma posição vazia na memória, é comum que métodos retornem null, mas apenas em métodos que procuram algo.
    Correto:
    Um método pegarLivroNaPosicao(int posicao), se não tiver um livro naquela posição quer dizer que ela está vazia, o método retorna null e podemos tratar essa exceção, por exemplo, com uma mensagem para o usuário avisando que não tem livro naquela posição.
    Errado: 
    Um método comprarLivro(Livro livro), vejamos, o livro está aí, se esse método depender de um saldo para que a compra seja efetuada, o retorno deve ser um true ou false, ou ainda uma mensagem para o usuário. retornar null é uma má prática de programação.
     
    No meu código (maneira 1)  eu estava forçando um erro para fechar a janela indesejada, isso também é uma má prática de programação.
     
    frame.setVisible(false); while (true) { jogador1 = JOptionPane.showInputDialog(null, "Digite o nome do Jogador 1", "Informação", JOptionPane.PLAIN_MESSAGE); if (jogador1 == null) { frame.setVisible(true); break; } jogador2 = JOptionPane.showInputDialog(null, "Digite o nome do Jogador 2", "Informação", JOptionPane.PLAIN_MESSAGE); if (jogador2 == null) { frame.setVisible(true); break; } } Percebi que tanto você como Adriano colocaram esse if (que se verdadeiro, encerra o programa) "no meio do código", tenho o hábito de fazer o contrário. A minha maneira é uma prática ruim, ou algo do tipo?
    if (jogador != null) { ...continua o código com as funções que quero executar . . . . . } else { fecha o programa ou exibe o erro }  
    Devo parar de ver Java Swing?
  4. O post de Joanderson Pereira em Java: Problemas com Herança múltipla/Interface foi marcado como solução   
    TÓPICO DUPLICADO**
    Interface apenas define o que fazem as classes que a implementam, meu erro realmente foi falta de conhecimento do que era uma interface.
    Consegui resolver o problema criando um package para Sistema e ContaDiretor, mudando atributos/métodos como contas[ ] e totalContas para protected.
    ContaDiretor continua herdando de Conta e agora tem acesso exclusivo a atributos/métodos da classe Sistema
    package Sistema; import Conta.Conta; public class Sistema{ protected Conta contas[] = new Conta[100]; public Conta contaPublic = new Conta(); protected String nomeBanco = "Banco do Brasil"; protected int totalContas = 0; public String getNomeBanco() { return nomeBanco; } public void adicionaConta(Conta conta){ this.contas[totalContas] = conta; totalContas++; } //... } package Sistema; import Banco.Banco; import Conta.Conta; public class ContaDiretor extends Conta{ public static String nomeDoBanco; public void setNomeBanco(String nome) { Banco.reg1.nomeBanco = nome; // TODO Auto-generated constructor stub }
  5. O post de Joanderson Pereira em Java: Problemas com Herança múltipla/Interface foi marcado como solução   
    TÓPICO DUPLICADO**
    Interface apenas define o que fazem as classes que a implementam, meu erro realmente foi falta de conhecimento do que era uma interface.
    Consegui resolver o problema criando um package para Sistema e ContaDiretor, mudando atributos/métodos como contas[ ] e totalContas para protected.
    ContaDiretor continua herdando de Conta e agora tem acesso exclusivo a atributos/métodos da classe Sistema
    package Sistema; import Conta.Conta; public class Sistema{ protected Conta contas[] = new Conta[100]; public Conta contaPublic = new Conta(); protected String nomeBanco = "Banco do Brasil"; protected int totalContas = 0; public String getNomeBanco() { return nomeBanco; } public void adicionaConta(Conta conta){ this.contas[totalContas] = conta; totalContas++; } //... } package Sistema; import Banco.Banco; import Conta.Conta; public class ContaDiretor extends Conta{ public static String nomeDoBanco; public void setNomeBanco(String nome) { Banco.reg1.nomeBanco = nome; // TODO Auto-generated constructor stub }  

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!