Iniciante em Java... dúvidas com variaveis e metodos

10 respostas
Renato_Freitas

pessoal estou com algumas dúvidas de iniciante em Programação e Java.
no código abaixo, como faço para chamar as variaveis nome e salario dentro do for?
Declarei elas dentro do for e rodou normal, más declarando elas fora do for, como faço para chamalás dentro dele.`Desculpe se é uma dívida bem besta, más sou iniciante... sabe como é né.

import javax.swing.JOptionPane;

class MediaSalarial
{
	public static void main(String[] args)
	{
		String nome = JOptionPane.showInputDialog("Digite seu nome:");
		String entrada1 = JOptionPane.showInputDialog("Digite seu Salário:");
		double salario = Double.parseDouble(entrada1);
	
		double acumuloSalarial = 0;
		double mediaSalarial;
		int count;

		for(count = 1; count < 4; count++)
		{
			/*chamar as variaveis nome e salario aqui.*/
			/*se eu declarar elas direto aq funciona
			String nome = JOptionPane.showInputDialog("Digite seu nome:");
			String entrada1 = JOptionPane.showInputDialog("Digite seu Salário:");
			double salario = Double.parseDouble(entrada1);*/
			acumuloSalarial = acumuloSalarial + salario;
		}
     
		mediaSalarial = acumuloSalarial / count;
		JOptionPane.showMessageDialog(null, "A média salarial é: " + mediaSalarial);
	}
}

Tenho outra dúvida....

Tentei fazer este Exemplo acima criando uma classe separa do Main e nesta classe um metodo calcularSalario(),
o programa compila más o For dentro do metodo so dá um unico looping, qdo o certo é dar 4... por favor digão onde estou errando...

import javax.swing.JOptionPane;

class SalarioFuncionario
{
	String nome; 
	double salario;
	double acumuloSalarios = 0;
	double mediaSalarial;
	int count;
	
	void calcularSalarios(String Nome, double Salario)
	{
		for(count = 1; count <=4; count++)
		{
			this.nome = Nome;
			this.salario = Salario;
			acumuloSalarios = acumuloSalarios + salario;
		}

		mediaSalarial = acumuloSalarios / count;
		JOptionPane.showMessageDialog(null, "A média Salarial é" + mediaSalarial);
	}
}
import javax.swing.JOptionPane;

class FuncionarioMain
{
	public static void main(String[] args)
	{	
		SalarioFuncionario obj = new SalarioFuncionario();

		obj.nome = JOptionPane.showInputDialog("Digite seu nome:");
		String entrada = JOptionPane.showInputDialog("Digite seu Salário:");
		obj.salario = Double.parseDouble(entrada);

		obj.calcularSalarios();	
	}
}

Se alguém poder me ajudar Valewwww

10 Respostas

M

Cara, qualquer variavel declarada fora de um escopo {} é totalmente enchergavel dentro dos {} subsequentes. O q vc nao pode eh declarar ela duas vezes.

Por ex:

{
String nome = "Mizael";
...
for () {
nome = "Teste";
}


}

isso ira funcionar, o q vc nao pode fazer eh:

{
String nome = "Mizael";
...
for () {
String nome = "Teste";
}


}

Ou seja, declarar ela duas vezes.

M

Em relacao a outra duvida, seu codigo parece está ok, chegando em casa eu vo testar ele pra ver se esse laço so entra 1 vez mesmo, porem faz um teste, manda imprimir no console o valor de count pra vc se ta realmente parando.

W

cara, como o cara falou la em cima, vc deve ta declarando duas vezes com o mesmo pra estar dando erro…

quanto aos outros codigos, antes de tudo, tem uma chamada pra
obj.calcularSalarios(); que vc nao passa parametro nenhum…
e no outro codigo pede parametros…

porem voce ja configurou as variaveis, na classe funcionario main, entao nao precisaria passar parametro nenhum pro metodo mesmo…

entao so alteraria o codigo da Salario funcionario para

void calcularSalarios()
	{
		for(count = 1; count <=4; count++)
		{
			//this.nome = Nome;
			//this.salario = Salario;
			acumuloSalarios = acumuloSalarios + salario;
			System.out.println("count "+count);
		}

botei um println ai… pra mostrar que o laco ta em um loop de 4 vezes sim…
agora oque tu quer fazer com o programa que nao intendi direito eheh…

qualquer coisa so postar ae…

T
obj.calcularSalarios("Funcionário",470.00);

Você está no caminho, para continuar no trilho, procure por Encapsulamento(get, set,is) para suas váriaveis!

Boa sorte nos Estudos!

Renato_Freitas

WillyKocher:
cara, como o cara falou la em cima, vc deve ta declarando duas vezes com o mesmo pra estar dando erro…

quanto aos outros codigos, antes de tudo, tem uma chamada pra
obj.calcularSalarios(); que vc nao passa parametro nenhum…
e no outro codigo pede parametros…

porem voce ja configurou as variaveis, na classe funcionario main, entao nao precisaria passar parametro nenhum pro metodo mesmo…

entao so alteraria o codigo da Salario funcionario para

void calcularSalarios()
	{
		for(count = 1; count <=4; count++)
		{
			//this.nome = Nome;
			//this.salario = Salario;
			acumuloSalarios = acumuloSalarios + salario;
			System.out.println("count "+count);
		}

botei um println ai… pra mostrar que o laco ta em um loop de 4 vezes sim…
agora oque tu quer fazer com o programa que nao intendi direito eheh…

qualquer coisa so postar ae…

Cara valeu pela ajuda, mais ainda tenho algumas dúvidas, sobre o programa é apenas uma exemplo exercicío de apostila, ele recebe 4 salarios, em cada for ele acumula os Salarios e depois tira a média dividindo pela variavel count, o salario e o nome eu recebo do usuário via JOptionPane.showInputDialog(), na classe FuncionarioMain.

bom eu testei o jeito q vc postou, o for tá funcionando más antes dele receber os 4 salarios do funcionario ele já calcula a media no primeiro salario.

para acumular o salario digitado em cada passada do for eu ñ preciso passar como parametro como eu fiz para o metodo calcularSalarios() o nome e o salario???

Renato_Freitas

sobre o lance das variaveis no outro caso entendi direitinho Valewww a todos em…

M

Tu quer entrar com 4 nomes e 4 salarios diferentes, e tirar a media ne? Entao faz assim:

public static void main(String[] args)  
     {     
            double salarioAcum = 0;
       for (int i = 1; i <= 4; i++) {
             SalarioFuncionario obj = new SalarioFuncionario();  
             obj.nome = JOptionPane.showInputDialog("Digite seu nome:");  
             obj.salario = Double.parseDouble(JOptionPane.showInputDialog("Digite seu Salário:"));  
             salarioAcum += obj.salario;
       }   
    JOptionPane.showMessageDialog(null, "A média Salarial é" + SalarioFuncionario.calcularSalarios(salarioAcum);   
     }

E a outra classe

Tem formas bem mais elegantes de se fazer isso ae, mais pra vc q ta aprendendo ta bom.

Renato_Freitas

mizael86:
Tu quer entrar com 4 nomes e 4 salarios diferentes, e tirar a media ne? Entao faz assim:

public static void main(String[] args)  
     {     
            double salarioAcum = 0;
       for (int i = 1; i <= 4; i++) {
             SalarioFuncionario obj = new SalarioFuncionario();  
             obj.nome = JOptionPane.showInputDialog("Digite seu nome:");  
             obj.salario = Double.parseDouble(JOptionPane.showInputDialog("Digite seu Salário:"));  
             salarioAcum += obj.salario;
       }   
    JOptionPane.showMessageDialog(null, "A média Salarial é" + SalarioFuncionario.calcularSalarios(salarioAcum);   
     }

E a outra classe

Tem formas bem mais elegantes de se fazer isso ae, mais pra vc q ta aprendendo ta bom.

desse jeito que vc me passou deu certo…
a cada passada do for ele cria um novo objeto SalarioFuncionario…
eu tava tentando deixar do outro geito más ñ estou conseguindo com o for dentro do metodo calcularSalarios() da classe SalarioFuncionario e apenas chamando o obj.nome, obj.salario e o metodo calcularSalarios() dentro da clase Main.

Más obrigado a todos pelas dicas…
um dia eu chego lá se Deus quizer :smiley: :smiley: :smiley:

Renato_Freitas

Consegui fazer assim tabém oh

import javax.swing.JOptionPane;

class SalarioFuncionario
{
	String nome;
	double salario;
	double acumuloSalarial = 0.0;
	double mediaSalarial;

	void calcularSalarios()
	{
		for(int count = 1; count <= 4; count++)
		{
			this.nome = JOptionPane.showInputDialog("Digite seu nome:");
			this.salario = Double.parseDouble(JOptionPane.showInputDialog(
								"Digite salario:"));

			acumuloSalarial += salario;
		}

		mediaSalarial = acumuloSalarial / 4;
		JOptionPane.showMessageDialog(null, "A média Salarial é: " + mediaSalarial);
	}
	
}
import javax.swing.JOptionPane;

class FuncionarioMain
{
	public static void main(String[] args)
	{	
		SalarioFuncionario obj = new SalarioFuncionario();
 
		obj.calcularSalarios();
	}
}

deu certo pelo menos....
um dia eu chego la....
valeu a todos pela ajuda :thumbup: :thumbup: :thumbup:

M

Funciona tbm. O mais legal seria vc fazer um array de objetos dentro da classe SalarioFuncio… ai vc cria um for no main, e vai adicionando objetos a esse array, depois vc cria um metodo q liste esse array, some os salarios dos objetos, e entao calcule a media. tem varias formas de fazer isso.

O mais elegante mesmo seria existir uma classe bean chamada funcionario, q teria o nome e o salario. Ai vc poderia fazer a classe salariofuncionarios, com um array de funcionarios. e dentro vc poderia fazer metodos para calcular a media dentre todos funcionarios no array, etc. Flw

Criado 22 de janeiro de 2008
Ultima resposta 23 de jan. de 2008
Respostas 10
Participantes 4