Ola pessoal tenho uma dúvida básica quanto a passagem de parâmetros em métodos, a dúvida é referente a um trecho do código abaixo:
importjavax.swing.*;classMetodoSimplesVoid{staticdoublenota1=0,nota2=0,media=0;publicstaticvoidmain(Stringargs[]){leNotas(nota1,nota2);calculaMedia(nota1,nota2);imprimeMedia(media);}publicstaticvoidleNotas(doublenota1,doublenota2){nota1=Double.parseDouble(JOptionPane.showInputDialog("Digite a primeira nota"));nota2=Double.parseDouble(JOptionPane.showInputDialog("Digite a segunda nota"));}publicstaticvoidcalculaMedia(doublenota1,doublenota2){media=(nota1+nota2)/2;}publicstaticvoidimprimeMedia(doublemedia){JOptionPane.showMessageDialog(null,"O valor da média é: "+media);}}
estou utilizando a passagem de parâmetros dentro do método leNotas(), quando eu retiro os parâmetros a aplicação
funciona normalmente, porém quando eu coloco os parâmetros o resultado aparece zerado 0.0, gostaria de entender o porquê,
outra coisa bem básica que eu gostaria de entender é qual é a vantagem de utilização de parâmetros, uma vez que em qualquer
um desses métodos o seu uso é desnecessário
use as tags “code” e "/code pra postar seus codigos,
Gustavokt
Sinvaldo_Junior:
estou utilizando a passagem de parâmetros dentro do método leNotas(), quando eu retiro os parâmetros a aplicação
funciona normalmente, porém quando eu coloco os parâmetros o resultado aparece zerado 0.0, gostaria de entender o porquê,
É o padrão do java o tipo da sua variável quando não se inicializa a variável
Se você for fazer tudo na mesma classe, realmente não faz sentido ter parâmetros. Mas daí você não vai conseguir fazer nada orientado a objeto, depende do que você quer fazer
V
vaziocs2
Nesse caso nao tem vantagem nenhuma, vc ja esta usando um componente do swing, que está recebendo o parametro de qualquer jeito.
A media está aparecendo 0.0 pq
calculaMedia(nota1, nota2); ta pegando os valores de
static double nota1=0,nota2=0,media=0;
e quando vc faz
nota1 = Double.parseDouble(JOptionPane.showInputDialog(“Digite a primeira nota”));
nota1 ali é o seu parametro não é a variavel.
E saindo do metodo lenotas esse nota1 morreu ai.
codigo funcionando
importjavax.swing.JOptionPane;publicclassSnippet{staticdoublenota1=0;staticdoublenota2=0;staticdoublemedia=0;publicstaticvoidmain(Stringargs[]){leNotas();calculaMedia();imprimeMedia(media);}publicstaticvoidleNotas(){nota1=Double.parseDouble(JOptionPane.showInputDialog("Digite a primeira nota"));nota2=Double.parseDouble(JOptionPane.showInputDialog("Digite a segunda nota"));}publicstaticvoidcalculaMedia(){media=(nota1+nota2)/2;}publicstaticvoidimprimeMedia(doublemedia){JOptionPane.showMessageDialog(null,"O valor da média é: "+media);}}
Sinvaldo_Junior
Nossa ! verdade,
o valor obtido pela JOptionPane é atribuído para o parâmetro e não para a variável (atributo) agora entendi o erro.
caros amigos,
deixa eu ver se eu entendi direito a vantagem da utilização de parâmetros,
eles possibilitam eu efetuar procedimentos em outras classes de modo a referênciar atributos da
classe que os contém ?
Muito Obrigado !
Gustavokt
Ops, na verdade, você inicializou as variáveis tudo com 0 e naquele método que deveria inicializar os valores, seus parâmetros tem o mesmo nome das varáveis de classe.
Ficou meio confuso como você quis inicializar as variáveis mas tem 2 coisas…
Você quis alterar os valores do método, mas não conseguiu porque java passa o valor dos parâmetros e não referência.
Passou a variável da classe como parâmetro (o que não precisava pois era da classe)
T
truck1n
Você esta colocando um Object dentro de um primitivo?
Sinvaldo_Junior
Não perceba que no exemplo não crio nenhum objeto
Mas pensando melhor aqui com os meus botões, para o leNota() na main eu passo os parâmetros
nota1 e nota2, atributos esses criados globalmente, não era para o método modificar os valores dessas variáveis e quando eu chamasse o
calculaMedia(nota1, nota2) essas notas não estariam com os valores obtidos pela JOptionPane ?
adriano_si
Cara… (sem fazer o teste aqui porque to sem Java no momento) vou te dar uma sugestão, retira os parametros do metodo leNota() e executa de novo…
Se nao entender o que aconteceu, pergunte aqui de novo.
Falows 8)
Sinvaldo_Junior
adriano_si:
Cara… (sem fazer o teste aqui porque to sem Java no momento) vou te dar uma sugestão, retira os parametros do metodo leNota() e executa de novo…
Se nao entender o que aconteceu, pergunte aqui de novo.
Falows 8)
retirando os parâmetros roda normalmente,
mas eu acho que finalmente entendi o que acontece neste exemplo, caso o meu raciocínio esteja errado eu peço que por favor me correjam,
como estou passando os meus atributos ( com o mesmo nome >.< ) como parâmetros por valor dentro do método leNotas() eu tento realizar
uma modificação em seus valores, o que não é possível por ser uma passagem por valor, ou seja, as atualizações não seram refletidas nas
variáveis passadas como parâmetros , isto foi dito pelo nosso amigo anteriormente (demorei a entender =P)
agora uma outra perguntinha, Java possibilita a passagem por referência ?