public static void main(String args[]){
String s="";
//chama();
/* Do jeito que o programa está, compila, mas não mostra nada.
Se eu tirar esse “chama()” do comentário, que na verdade é o meu intuito(chamar o método), dá o erro:
“chama(java.lang.String) in MostraOi cannot be applied to ()”. Não entendi o que significa essa mensagem. Por questão de didática, poderiam me explicar? E segundo, como eu chamo esse método, afinal? */
Esse método recebe uma String, então quando chamá-lo, vc deve passar uma String como parâmetro, e além disso, deve ter uma String para receber o que ele retorna, exemplo:String retorno = chama("uma String");
Mas repare que essa String que ele recebe não faz nada, então vc pode retirá-la da assinatura do método, ou usar ela pra alguma coisa!
cara… então quando vc define um metodo – > pera… melhor! olha aki…
// metodo!
public void chama (String s)
// aki vc passou um parametro! --> String s <-- quando vc invocar este metodo tera de usar um argumento neste espaço entende? se vc esta dterminando que o metodo recebera uma String aki, ele TEM que receber uma String pra funcionar…
{
this.s = s; // aki vc pode fazer desta forma, onde vc determina que o s que vc declarou la em cima vai receber este “s” que vc usou como parametro.
System.out.println( "este é o valor contido na variavel s" +s);
// aki vc esta imprimindo o que vc fez!
}
quando chamar o metodo vc pode fazer assim por exemplo…
chama (oi);
tavendo??? o “oi” é o parametro!
ahhh ! e pelo amor de deus!! um metodo void não tem return (por exemplo um metodo que inseri algo ou imprime uma msg)... um metodo que retorna alguma coisa tem!( um get por exemplo)
"// aki vc passou um parametro! --> String s <-- quando vc invocar este metodo tera de usar um argumento neste espaço entende?"
Mas se já está declarado que "s" é um argumento(está dentro do parâmetro), como declarar mais um argumento no mesmo espaço?
"se vc esta dterminando que o metodo recebera uma String aki, ele TEM que receber uma String pra funcionar…"
Isso não é uma string?
s= "Oi"; //uma string sendo atribuída a "s".
Desculpe as perguntas, mas estou me orientando pelo que vc disse.
Outra coisa, vc colocou public void chama (String s), quando na verdade o objetivo era retornar um valor. Eu já sei que quando tem ‘void’, não tem retorno.
A String s que você está declarando dentro do método main não é a mesma que a do método chama, só por que tem o mesmo nome!
Você deve passar uma String para o método chama, da seguinte maneira:
chama(s);
Como ja falaram acima,
Se ainda não entendeu, aconselho em dar uma estudada em vez de perguntar no forum, pesquisando no google voce pode achar milhares de tutoriais basicos de programação (não só em JAVA)
tu podes estar confundindo variaveis locais com atributos de uma classe.
public class Teste{
public String dizOi() { return "Oi!!!!!!!"; }
public static String dizOla() { return "OLA!!!!!!!"; }
public static void main (String [] args){
Teste t = new Teste();
String s = t.dizOi();
System.out.println("o resultado de t.dizOi() eh: " + s);
// para acessar um método estático, basta usar o nome da classe!
System.out.println("o resultado de Teste.dizOla() eh: " + Teste.dizOla());
}
}
Outra as variaveis locais… ela existem apenas dentro do escopo vc declarou…
Mas o que seria uma variavel local?
Qualquer variavel que vc declarar entre um par de {} assim:
void metodo(int a){
int b=0;
//a e b sao variaveis locais de acordo que falei acima certo?
vc pode ter variaveis locais com mesmo nome e mesm o tipo que variaveis locais de escopo diferentes isso é chamado de sombreamento… e confude bastante…
Agora vem a pergunta para vc ver se entendeu… analisando o que falei acima… veja se seu codigo está compativel… e procure ver aonde errou e como poderia implementar seu codigo para funciona com que abordei…
Bom nao quis ti dar a resposta, e sim que vc entenda e dai vc resolve seu proprio problema… e aprenda com ele… foi assim que aprendi… la no inicio e sugiro tb, mas nada impede de vc tomar outros caminho… mais desde que aprenda
eu percebi que vc tava querendo fazer um metodo que precisasse de retorno mas achei mais coerente um que imprimisse na tela a string em um contexto... mas eh akilo... vc tem que ler uma apostila.. se quiser me manda seu msn que te passo umas dicas e o livro do deitel (1200 paginas) no formato do adobe fmz?
to ligado que mesmo tendo varias apostilas na net é dificl sem algum tipo de explicação especifica… ja passei muito por isso!
Pra não deixar ele mais loko ainda… e sair com as ideias embaralhadas!! é bom tu estudar o básico de Java entender como funciona metodos, parametros e principalmente Objetos!!.. Vai por mim pega uma apostila aew na net aqui no Guj tem muita coisa… lê que tu entende muito mais!
Povo, o problema é que eu faço exatamente isso: eu leio as apostilas, é uma coisa que eu aprendo o que estão ensinando, mas criar é outra história.
Não estou entendendo ainda como eu posso chamar o método. Parece nem mesmo existir um padrão. Oras o bloco principal fica embaixo, oras em cima.
Mais uma coisa: no post do Guilherme Gomes, ele diz que devo declarar assim:
chama(s);.
Enquanto no post do peczenyj, ele fez:
public String dizOi(). Afinal, esses parênteses é pra ficar com o “s” dentro ou sem nada? Estou muito confuso.