Criação de metodos... (Dúvida simples.)

7 respostas
C

Amigos, conforme havia dito, estou começando a conhecer o Java e ainda sinto dificuldades em entender as msg de erro durante a compilação. O código abaixo me indica erro, mas não entendo, pois o compilador diz que o erro encontra-se na criação do método soma()... Se puderem me ajudar, agradeço.

public class TestaMetodo1
{
    public static void main (String args[])
    {
        int a=1, b=5;
        System.out.println(soma(a,b));// aqui, chamo o método passando 2 argumentos previamente definidos...

        int soma(int x, int y) // aqui eu deveria receber 2 argumentos
        {
           return x+y;// queria q fosse retornado o resultado do somatório
        }
    }
}

7 Respostas

R

Calvin…

fiz uma correcao no seu codigo…ai vai o correto…deve funcionar…

public class TestaMetodo1 
{ 
public static void main (String args[]) 
{ 
int a=1, b=5; 
System.out.println(soma(a,b));// aqui, chamo o método passando 2 argumentos previamente definidos... 
} 
private int soma(int x, int y)
{
return x + y;
}
}

p/ chamar um metodo, vc deve cria-lo separadamente da chamada…vc estava chamando e criando ao mesmo tempo…

qq duvida, poste aqui…

thiagorani
public class teste

{

public static void main (String args[])

{

int a=1, b=5;

System.out.println(soma(a,b));
}

private static int soma(int x, int y)

{

return x + y;

}

}

O codigo do rafael esta correto, mas como o metodo soma esta sendo chamdo por um contexto static ele tem que ser static tbem.

Eu compilei e rodei esse codigo. Testa ae.

Até,

Thiago

C

PessoALL valeu mesmo. Só mais duas coisinhas… o Thiago acrescentou a seguinte linha no meu programa capengo:

private static int soma(int x, int y){}

Queria saber o seguinte: sempre que o meu método for chamado a partir de um método static main quer dizer q o método chamado tb tem que ser static? Pergunto isso pq antes mesmo do Thiago explicar isso eu já havia tentado, mas sem sucesso. Dava pra esclarecer essa dúvida?!

A outra dúvida é quanto ao método ser private… vcs sugeriram isso mas poderia ser public, certo?! O private foi para garantir a ‘integridade’ do método não foi?! Desde já, valeu again!

R

entao Calvin…

isso mesmo…qdo chamar o metodo ou uma variavel dentro de um metodo static, esse metodo/variavel precisa ser static tb…
tem um tutorial sobre static aqui no GUJ…de uma olhada depois…

o lance do private foi usado p/ definir o tipo de acesso ao metodo…sendo public, outra classe poderia chama-lo…sendo private, apenas a classe a qual ele pertence pode chama-lo…

falow

karluqs

Oi Calvin,

O método teve de ser declarado static pois a chamada do método em

System.out.println(soma(a,b));

não estava sendo feito a partir de uma instância desta classe e sim do contexto estático, mas ele funcionaria sem o static da seguinte forma.

public class teste

{

public static void main (String args[])

{

int a=1, b=5;

teste InstanciaTeste = new teste();

System.out.println( InstanciaTeste.soma(a,b) );

}

private int soma(int x, int y)

{

return x + y;

}

}

Desse modo a chamada vem de um instância, mas claro que no exemplo que vc fez o correto é com o uso do static, como demonstrado pelo thiagorani, nada de fazer algo como fiz ai acima para ilustrar o exemplo. :wink:

Ah sim ele foi declarado private só para garantir a integridade do método, nada impede dele ser declarado como public ou protected.

Qualquer dúvida posta aí.

richardpeder

cara, vamos dar um resumo do que nossos amigos falaram.....

se vc declara variaveis estaticas, o metodo onde vc usa elas tem que ser estatico

[code]

public class teste
{

public static int a = 5;
public static int b = 6;

public static void main(String args[])
{
System.out.println("Variavel a: "+a);
System.out.println("Variavel b: "+b);
}
}

Testa ai, nao testei, mas acho que eh por ai....caso der erro, ou falei algo errado, me corriga!!!

valeu....

richardpeder

eheheeh, ae pessoal, me desculpem, mas postei meio de qualquer jeito a resposta anterior e não curto muito deixar duvidas no ar… :oops:

entao cara, ai vai o codigo, agora “decentemente”:

public class teste 
{ 

public static int a = 5; 
public static int b = 6; 

public static void main(String args[]) 
{ 
System.out.println("Variavel a: "+a); 
System.out.println("Variavel b: "+b); 
} 
}

Lembre-se, o main() eh tb um metodo com retorno void e passando como parametros uma String de argumentos…quando vc declara static e quer usar dentro de um metodo static, dai funciona. Testei aqui em casa e deu certo…não sei se era isso que vc queria, mas caso não fosse e não soubesse disso, aprendeu mais uma!! :wink: Estamos aqui para isso!! :smiley:

ate mais e boa sorte!!

Criado 17 de fevereiro de 2003
Ultima resposta 17 de fev. de 2003
Respostas 7
Participantes 5