Criei um método somar e nele contem a somatória de dois números.
Eu não coloquei tipo de retorno e coloquei syso dentro dele.
Se eu fosse usar o resultado como retorno como eu colocaria no método main para exibir?
package br.com.calculadora.modelo.calc;
import javax.swing.JOptionPane;
public class Executar {
public static void main(String[] args) {
final String somatorio = "+";
double primeiroValor = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro valor"));
double segundoValor = Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo valor"));
String operador = JOptionPane.showInputDialog("Digite o tipo de operador");
if (operador.equals(somatorio)) {
Calc.Somar(primeiroValor, segundoValor);
}
}
}
eu não sabia que quando você instância e cria um objeto vc já poderia puxar o método que esta dentro da classe diretamente pra dentro do objeto…
ali no seu exemplo já vem com o return ?
Exatamente, a única diferença que vc tá acostumado é guardar em uma variável local e depois chamar o método pela mesma.
int retorno = new ClasseQueEstaOMetodoTest().test();
ClasseQueEstaOMetodoTest classeTest = new ClasseQueEstaOMetodoTest();
int retorno = classeTest.test();
outra dúvida agora sobre o loop que eu to tentando fazer usando uma variavel boleana
public class Executar {
public static void main(String[] args) throws ExcecaoCalculadora {
boolean FLAG = false;
while (!FLAG) {
try {
double primeiroValor = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro valor"));
double segundoValor = Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo valor"));
String operador = JOptionPane.showInputDialog("Digite o tipo de operador");
switch (operador) {
case "+":
FLAG=true;
System.out.println(Calc.somar(primeiroValor, segundoValor));
break;
case "-":
FLAG=true;
System.out.println(Calc.subtrair(primeiroValor, segundoValor));
break;
case "/":
FLAG=true;
System.out.println(Calc.dividir(primeiroValor, segundoValor));
break;
case "*":
FLAG=true;
System.out.println(Calc.multiplicar(primeiroValor, segundoValor));
break;
}
} catch (Exception e) {
FLAG=false;
throw new ExcecaoCalculadora("Inclusao de Numeros -" + e.getMessage());
}
}
}
}
Primeiramente a sua classe está errada no sentido dos sinais e eu não usaria static nos métodos (só se for uma obrigação de algum código pedido em faculdade), então:
public class Calc {
public double Somar(double valor1, double valor2) {
return valor1 + valor2;
}
public double Subtrair(double valor1, double valor2) {
return valor1 - valor2;
}
public double Dividir(double valor1, double valor2) {
return valor1 / valor2;
}
public double Multiplicar(double valor1, double valor2) {
return valor1 * valor2;
}
}
Isso, eu utilizaria o recurso mediante estância da classe, ou seja, faria tudo no objeto criado.
O static nesse caso não daria para passar como objeto na classe carrinho por exemplo, e outra coisa quando utilizamos um classe de lista de objeto ele já a parte da contagem e somas e diversas coisas relacionado a lista de objetos. Static tem seu próposito sim, mas, em casos especificos!
por exemplo se eu crio um objeto do tipo list usuario = new Arraylist();
dentro de usuario eu crio um objeto do tipo arraylist e ai eu consigo por varios objetos dentro dele?
usando um loop for e fazer todo o corpo pra criar e claro.