Olá galera!
Sou novo aqui no fórum e ultimamente tenho lutado para aprender esse “mal necessário” chamado Java rsrsrs.
Sem ter muita noção de OO estou tentando fazer um programinha para calcular a soma de dois números. Mas desejo fazer isto em duas classes.
Esta classe contém o método:
packagejavaapplication2;importjavax.swing.JOptionPane;publicclassMain{publicstaticvoidmain(String[]args){intrecebe1=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro numero "+Calcula.valor1));intrecebe2=Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo numero "+Calcula.valor2));JOptionPane.showMessageDialog(null,"O resultado é "+Calcula.soma);}}
Porém, ao executar o codigo o valor da soma fica sempre 0. Inclusive o valor1 e o valor2 tambem ficam sendo 0. Parece que isso acontece pelo fato de as variaveis terem sido declaradas como “static” e o valor permanece padrão, mas se não for “static” não tem como acessa-los na classe principal. Como faz para calcular estes numeros com o usuário passando os valores?
intrecebe1=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro numero "+Calcula.valor1));intrecebe2=Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo numero "+Calcula.valor2));
Está atribuindo valor a variável recebe1 e recebe2 e quando tenta fazer a soma não funciona pois valor1 e valor2 não estão recebendo valores.
O melhor a se fazer é criar um método calcular que retorna uma soma dos dois parametros de valores.
Ai na chamada no método voce coloca o recebe1 e recebe2
Flw
W
wbdsjunior
tente:
importjavax.swing.JOptionPane;publicclassCalcula{staticintvalor1;staticintvalor2;staticintsoma;staticvoidcalcula(){// isto é um método. métodos podem ser static e tem retorno.soma=valor1+valor2;}publicstaticvoidmain(String[]args){Calcula.valor1=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro numero"));Calcula.valor2=Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo numero"));Calcula.calcula();JOptionPane.showMessageDialog(null,"O resultado é "+Calcula.soma);}}
o método main pode estar em outra classe. fiz na mesma classe para que você tente colocá-lo em outra.
A
andredecotia
Recomendo ler o conceito de:
1 - Modificadores de acesso (public, static, private, default)
2 - Conceito de instânciação de classes
3 - Conceito de construtores
4 - Conceito de método e variáveis estáticos
A
andredecotia
Próximo do que você tentou fazer talvez pudesse ser isso (detalhe compilei na cabeça na telinha aqui do GUJ pode haver erros de compilação, ok?):
publicclassCalcula{// Atributoprivateintsoma;// Construtor com parametrospublicCalcula(intvalor1,intvalor2){this.soma=valor1+valor2;}// Construtor padrãopublicCalcula(){}// GetterpublicintgetSoma(){returnthis.soma;}}
publicstaticvoidmain(String[]args){intrecebe1=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro numero "+Calcula.valor1));intrecebe2=Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo numero "+Calcula.valor2));JOptionPane.showMessageDialog(null,"O resultado é "+Calcula.soma);}
Essa arquitetura acredito que só funcione se você usar o design pattern chamado Singleton, aliás, já implementei isso em um projeto passado.
A
andredecotia
Claro, antes precisaria mudar algumas coisas tal como isso não existe:
Calcula.soma);
A
andredecotia
Hehehe… Me empolguei neste exercício seu, rs… Quando eu era estagiário, lembro que meu chefe falou assim no almoço: André, vamos ver como você está! Implementa agora para mim um método que calcule dois números! hehehe… Enrolei, até pedí papel para o garçom (sempre adorei desafios e tals), mas a verdade e que não conseguí solucionar! rs…
Sorte!
André AS.
A
andredecotia
packagejavaapplication2;
Crie em pacotes diferentes e com nomes sugestíveis, veja um exemplo:
package br.edu.projetodeestudo.helperAqui dentro você implementar a classe Calcula
package br.edu.projetodeestudo.testesAqui dentro você implementar a classe Main
Desta forma você conseguirá usufluir melhor de OO, tal como a classe Calcula tem de ser obrigatoriamente public
já a classe Main não precisa ser.