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

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é.

[code]
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);
}

}[/code]

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…

[code]
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);
}

}[/code]

[code]
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();	
}

}[/code]

Se alguém poder me ajudar Valewwww

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.

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.

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…

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!

[quote=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…[/quote]

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???

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

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.

[quote=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.[/quote]

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:

Consegui fazer assim tabém oh

[code]
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);
}

}[/code]

[code]
import javax.swing.JOptionPane;

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

	obj.calcularSalarios();
}

}[/code]

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

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