Problemas com Função

8 respostas
T

Esotu estudando Java a pouquissimo tempo, fui faze um codiguinho so pra ver como funciona as funçoes em java, eis que criei esse ai

import javax.swing.JOptionPane;
public class Funcoes {
	
	public static Soma(int n1,n2){
		int soma;
		soma = n1+ n2;
		return(soma);
	}
	
	
	
	
	public static void main (String args[]){
		int op,n1,n2; 
		
		
		op = Integer.parseInt(JOptionPane.showInputDialog(null,"O que deseja fazer?","Novo",JOptionPane.QUESTION_MESSAGE));
		n1 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o primeiro numero","Novo",JOptionPane.QUESTION_MESSAGE));
		n2 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o segundo numero","Novo",JOptionPane.QUESTION_MESSAGE));		
		
		
		switch (op){
		case 1:
			Soma(n1,n2);
			JOptionPane.showInputDialog(null,"A soma é"+Soma(),"NOVO",JOptionPane.PLAIN_MESSAGE);
			
		}
}
}
Mas ele da alguns erros, mais necessariamente nessas partes
public static Soma(int n1,n2){
diz que Multiple markers at this line - Return type for the method is missing - Syntax error on token "n2", VariableDeclaratorId expected after this token

outro nessa parte

switch (op){
		case 1:
			Soma(n1,n2);

que diz
The method Soma(int, int) is undefined for the type Funcoes

e outro nessa
JOptionPane.showInputDialog(null,"A soma é"+Soma(),"NOVO",JOptionPane.PLAIN_MESSAGE);
que diz The method Soma() is undefined for the type Funcoes

Eu nao sei o porque desses erros, nao sei se a sintaxe mesmo que esta errada se nao se pode passar dois parametros para uma funçao em java...estou perdido '-'

Como proceder?

8 Respostas

S

O primeiro erro é o seguinte

public static Soma(int n1,n2)

fica assim

public static Soma(int n1, int n2)

e vc está informando que o método vai retornar um inteiro, mas na assinatura do método vc não colocou que irá retornar um inteiro

public static Soma(int n1, int n2)

fica assim

public static int Soma(int n1, int n2)
T

fiz isto, e continua o mesmo erro :S :?

F

[quote=santos.fernando]O primeiro erro é o seguinte

public static Soma(int n1,n2)

fica assim

public static Soma(int n1, int n2)

Faltou o retorno do metodo no caso um int

fica assim

public static int Soma(int n1, int n2)
S

Compare esse código com o que vc fez, e olhe as alterações que fiz.

import javax.swing.JOptionPane;  
public class Funcoes {  
      static int soma;
      
    public static void Soma(int n1, int n2){
        soma = n1+ n2; 
    }  
      
    public static void main (String args[]){  
        int op,n1,n2;   
          
          
        op = Integer.parseInt(JOptionPane.showInputDialog(null,"O que deseja fazer?","Novo",JOptionPane.QUESTION_MESSAGE));  
        n1 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o primeiro numero","Novo",JOptionPane.QUESTION_MESSAGE));  
        n2 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o segundo numero","Novo",JOptionPane.QUESTION_MESSAGE));       
          
          
        switch (op){  
        case 1:  
            Soma(n1,n2);  
            JOptionPane.showInputDialog(null,"A soma é: " +soma,"NOVO",JOptionPane.PLAIN_MESSAGE);  
              
        }  
    }  
}
T

Ae cara , obrigado deu certo

agora ele so da esse errinho na hora de imprimir

JOptionPane.showInputDialog(null,"A soma é"+Soma()+"NOVO",JOptionPane.PLAIN_MESSAGE);

Multiple markers at this line
- The method Soma(int, float) in the type Funcoes is not applicable for the
arguments ()

T

hmm entendi, fez um um metodo apenas para mudar o valor do atributo soma, mas se eu quisesse fazer um faunçao com retorno assim e talz, como eu imprimiria? teria que usar get?

S

Não necessariamente precisa utilizar o get, porém não conseguirá imprimir desse jeito porque o método soma possui dois parametros Soma(int n1, int n2), e no JOptionPane vc está chamando um método que não existe que o Soma(), porque não existe esse método ? Devido ao parametro.

Espero ter ajudado.

discorpio

Bom dia a todos.

Não necessariamente, somente se voce quisesse encapsular os atributos “n1”,“n2” e “soma”, e quisesse instanciar a classe Funcoes apartir de outra classe, neste caso ficaria assim:

public class Funcoes {     
 
      private int n1, n2, soma;

      public Funcoes(){
      }

      public Funcoes(int n1, int n2){
           setN1(n1);
           setN2(n2);
           setSoma();
      }

      public int getN1() {
          return n1;
      }

      public void setN1(int n1){
          this.n1 = n1;
      }

      public int getN2(){
          return n2;
      }

      public void setN2(int n2){
          this.n2 = n2;
      }

      public int getSoma(){
          return soma;
      }

      public void setSoma(){
          soma = getN1() + getN2();
          // ou
          soma = n1 + n2;
      }
       
}

// Instanciando funcoes e invocando o método soma, apartir de outra classe.

import javax.swing.JOptionPane;

public class Principal {

    public static void main(String args[]){
   
          // Meio mais rápido;       
          Funcoes func = new Funcoes(25,40);
          JOptionPane.showMessageDialog(null, "A soma é "+func.getSoma());

          // Outro meio mais codificado;
          Funcoes func = new Funcoes();
          func.setN1(25);
          func.setN2(40);
          func.setSoma();
          JOptionPane.showMessageDialog(null, "A soma é "+func.getSoma());
     }
}

Repare que utilizando-se de uma boa prática de POO, voce pode criar uma classe que instancie um objeto onde voce tem a funcionalidade não só de recuperar a soma desejada, como também os valores que foram informados, onde todos os atributos “n1”, “n2” e “soma” estão encapsulados, e é ai que entra os Getters e Setters.

Quanto ao erro reportado, [color=blue]"- The method Soma(int, float) in the type Funcoes is not applicable for the
arguments () "[/color] , voce está tentando passar como parâmetro um valor do tipo “Float”, quando é esperado um valor do tipo int, ou seja, voce está passando valores decimais do tipo 2,5, 4.8, quando deveria passar somente inteiros.

Criado 21 de fevereiro de 2010
Ultima resposta 21 de fev. de 2010
Respostas 8
Participantes 4