Ajuda no return

Estou tentando criar esse programa mas ele não está indo, quando tiro o último return ele da erro e sem esse último módulo não consigo retornar!
import javax.swing.*;
public class funcao {
public static void main (String args []){
int n1, n2, soma = 0;
n1 = Integer.parseInt(JOptionPane.showInputDialog("Digite um número: "));
n2 = Integer.parseInt(JOptionPane.showInputDialog("Digite outro número: "));
JOptionPane.showMessageDialog(null, "A soma dos números ímpares entre os números digitados é " + soma(soma));

}
static int soma(int n1, int n2, int soma){

    int i;

{
if (n1 > n2) {
for (i = n1; i >= n2; i–){
if (i%2!=0)
soma = soma + i;
}
return soma;
}
else{

      for (i = n1; i <= n2; i++){
		if (i%2!=0)
			soma = soma + i;
      }
     return soma;                

}

}

}
private static int soma (int soma){
  return

Indentação é chave para perceber o teu problema. Se não formatas devidametne o teu código vais ter muitas dores de cabeça com { e } …

import javax.swing.*;

public class funcao {
    public static void main (String args []){
        int n1, n2, soma = 0;
        n1 = Integer.parseInt(JOptionPane.showInputDialog("Digite um número: "));
        n2 = Integer.parseInt(JOptionPane.showInputDialog("Digite outro número: "));
        JOptionPane.showMessageDialog(null, "A soma dos números ímpares entre os números digitados é " + soma(soma));

    }
    static int soma(int n1, int n2, int soma){

        int i;
        {  // esta chaveta é desnecessária, podes apagar
            if (n1 > n2) {
                for (i = n1; i >= n2; i--){
                    if (i%2!=0)
                        soma = soma + i;
                }
                return soma;
            }
            else{

                for (i = n1; i <= n2; i++){
                    if (i%2!=0)
                        soma = soma + i;
                } 
               return soma;                
            }

        } // esta chaveta é desnecessária, podes apagar 

    }    

    private static int soma (int soma){
        return // aqui tens de retornar algo e terminar com ;
    // falta uma chaveta para terminar o método
// falta uma chaveta para terminar a classe

Entendi, mas quando eu retorno o último, não consigo ver a mensagem aparecendo, que seria o resultado do cálculo, não sei como fazer quando tem essa comparação, porque se coloco o return só no final ele pede ali no meio, se eu deixo só no meio ele pede no final

Agora que vejo o código com mais atenção, tu estás a chamar o método errado.

Aqui

JOptionPane.showMessageDialog(null, "A soma dos números ímpares entre os números digitados é " + soma(soma));

Deve ser

JOptionPane.showMessageDialog(null, "A soma dos números ímpares entre os números digitados é " + soma(n1, n2, soma));

Na verdade, soma nem deveria ser passado para dentro do método, uma vez que seria inicializado lá. Mas isso já é outra questão.

Para o teu código funcionar tens de apagar o método soma que recebe um int e tem esse return estranho e deixar só o outro soma com três parâmetros. E alterar a linha que eu disse acima

Consegui, muito obrigada mesmo!

1 curtida