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:
package javaapplication2;
public class Calcula {
static int valor1;
static int valor2;
static int soma;
public Calcula()
{
soma = valor1 + valor2;
}
}
Esta outra é a classe principal
package javaapplication2;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int recebe1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro numero " + Calcula.valor1));
int recebe2 = 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?
int recebe1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro numero " + Calcula.valor1));
int recebe2 = 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.
class Calcula {
int soma;
public int calcular(int valor1, int valor2) {
return soma = valor1 + valor2;
}
}
Ai na chamada no método voce coloca o recebe1 e recebe2
Flw
public class Calcula {
static int valor1;
static int valor2;
static int soma;
static void calcula() { // isto é um método. métodos podem ser static e tem retorno.
soma = valor1 + valor2;
}
public static void main(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);
}
}[/code]
Java é case sensitive.
public Calcula() { // isto é um construtor. contrutores não podem ser static e não tem retorno.
// ...
}
o método main pode estar em outra classe. fiz na mesma classe para que você tente colocá-lo em outra.
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
[code] public static void main(String[] args) {
int recebe1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro numero " + Calcula.valor1));
int recebe2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo numero " + Calcula.valor2));
JOptionPane.showMessageDialog(null, "O resultado é " + Calcula.soma);
} [/code]
Essa arquitetura acredito que só funcione se você usar o design pattern chamado Singleton, aliás, já implementei isso em um projeto passado.
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…