Dúvida sobre o meu método?

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;

public class Calc {

public static double Somar(double valor1, double valor2) {

    double resultado = valor1 + valor2;
    System.out.println(resultado);
    return 0;
}

public static double Subtrair(double valor1, double valor2) {

    double resultado = valor1 + valor2;

    return 0;
}

public static double Dividir(double valor1, double valor2) {

    double resultado = valor1 + valor2;

    return resultado;
}

public static double Multiplicar(double valor1, double valor2) {

    double resultado = valor1 + valor2;

    return resultado;
}

}

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);

    }

}

}

Primeiro, métodos com letra minúscula.

public int test(){
    return 0;
}

e no main

int retorno = new ClasseQueEstaOMetodoTest().test();

certo ?

1 curtida

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();

São equivalentes.

1 curtida

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;
    }
}

Utilizando agora na sua class Main:

Calc calc = new Calc();
    
double somarResultado = calc.Somar(100d, 200d);
double subtrairResultado = calc.Subtrair(100d, 200d);
double multiplicaResultado = calc.Multiplicar(100d, 200d);
double dividirResultado = calc.Dividir(100d, 200d);
    
    
System.out.println(somarResultado);
System.out.println(subtrairResultado);
System.out.println(multiplicaResultado);
System.out.println(dividirResultado);
1 curtida

Entendi entao vc instanciaria o objeto e usaria o metodo através do objeto criado, certo?

Mas qual o motivo de criar o objeto em vez de usar static mesmo?
qual a vantagem?

quero agradecer também pelo suporte que vc tem me dado.

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.

Sinceramente a sua pergunta inicial saiu do escopo com essa!

Faça uma nova pergunta e feche essa como conclusão, inclusive eu não entendi a sua pergunta!

!