HELP Como usa variáveis da função (Main) em outro método de classe?

8 respostas
W

Gente Urgente me ajude nessa! Sou novato e preciso dessa solução o mais rápido que puder.

Olha é o seguinte tenho que fazer uma multiplicação em uma classe com uma variável que esta na função “main” então já tentei varias ajudas e não consegui para melhor explicar vou postar o trecho do programa:

//Essa está em uma classe imprime

valor_pago = (consumo*valor_kwh);//A variável valor_kwh está na classe main onde foi declarada e trabalhada


O problema é que não estou conseguindo pegar essa variavel que está na classe main e jogar o valor dela ae nesse metodo dessa da classe imprime

Por favor ajuda me de um exemplo como eu posso pegar uma variável da função main e colocar ela em um método de outra classe.
Se for explicar utilize float não String.Obrigado!!!

8 Respostas

M

bom não entendi muito a sua duvida mas você está com problemas de compreensão de escopo provavelmente

Veja:

...

public static void main(String[] args){

      //escopo desta variavel apenas no metodo main
      float km = 10;

      metodoX(km);

      //agora km sera alterada pelo valor de retorno do metodoX
      km=metodoX(km);
}

//Ao passar uma variavel primitiva para outro metodo
//o JAVA faz uma copia dela para o seu novo escopo que é o metodo
public float metodoX(float kmInMetodo){

      //dobrando a variavel aqui a variavel km continua intacta com seu valor inicial 10
      kmInMetodo*=2;

      //caso queira recuperar este valor vc deverá retornalo e armazena-lo na sua variavel novamente
      return kmInMetodo;
}
...

Não sei se ajudei, caso não explique melhor a sua dúvida para que possamos lhe ajudar

W

Justamente isso só que o diferente é que O (public float metodoX(float kmInMetodo) está em uma outra CLASSE!!
Mas já me deu uma noção grande do problema.Muito Obrigado, valew mesmo!!!

peczenyj

se o metodo é de outra classe vc tem 2 opções

MinhaClasse variavel = new MinhaClasse(/* argumentos caso precise */); variavel.outroMetodo(xxx);

ou

MinhaClasse.outroMetodo(xxx);

se o metodo for static

W

Isso mesmo só que o problema é o seguinte o (outroMetodo) no caso é o MAIN!!!
E não da certo coloca:

variavel.main(XXX);

Não sei estou errado mais se criar um novo método na classe do main é passar por parâmetro resolveria, só que eu iria ter que modificar umas 345 linhas!!!

E um trabalho para facul eu tenho que entregar …

M

Realmente você não ´pode chamar o metodo Main da forma:

variavel.main(XXX)

afinal o metodo main é STATIC

posta aqui o codigo dessas duas classes pra que agente possa te dar uma solução mais viavel para o seu caso.

W

Esse é o main e a variável é o valor_kwh que tem que ir para a classe imprime

public class conta2 {//classe conta2

public static void main(String args[]) {//metodo 

	        float valor_kwh,leitura1_atual=1;

            String string_n3 = JOptionPane.showInputDialog("Entre com o Valor do KW/h"); // Le o valor do Kw/h		
			valor_kwh= Float.parseFloat(string_n3); // Converte string para float

			
			
			   
			
				while (leitura1_atual >=0) {
					
					
					kilovat kw= new kilovat();//Cria instancia
					kw.setkmw(valor_kwh);//acessar o atributos de forma  encapsulada ]
				
					
				int op =Integer.parseInt(JOptionPane.showInputDialog(null, "Digite:\n 1-Fornce uma leitura e gera fatura \n 2-Para alterar valor do Kwh\n 3-Sair do sistema "));
				
				if(op==3){
					System.exit(0);//Sai do programa
				}
				
				
				
				if(op==2) {
					
			conta1 obj=new conta1();//cria instacia 
			valor_kwh=obj.altera(valor_kwh);
			
			}
			
				
				if(op==1) {
                			
				   imprime ch= new imprime();
				   ch.imprime();
			

		}	
	  }
   
			
			
	  
   }	// Fim main	
	 
 }	// Fim class

[color=darkred]
A O VALOR DA VARIÁVEL valor_kwh TINHA QUE ESTA AQUI:[/color]

class imprime{
	public void imprime( ) {
		
		float  leitura_anterior=0,consumo,valor_pago=0,valor_kwh2;
		
		
		String String_n2;
		
		float leitura1_atual;
		
		
		
		   // Le o valor da leitura Atual
				      
			
				 String_n2 = JOptionPane.showInputDialog ("Entre com a Leitura Atual:");
				 
		
				      // Converte string para Float
				 leitura1_atual =Float.parseFloat(String_n2);
				 
				 
				 if (leitura1_atual<=0 || leitura1_atual>=9999) {
					 JOptionPane.showMessageDialog(null,"Erro numero negativo ou maior que 9999");
					return;
					 
				 }
				 
				  // Cria uma instacia no encapsulamento valorleitura
				 valorleitura vl =new valorleitura();
				 
				  //acessar o atributos de forma  encapsulada
				  vl.setString_n2 (leitura1_atual);
				 
				
			      
			      
				 (TINHA QUE CHAMAR ELA AQUI)
				
				 
				 // Cria uma instacia no encapsulamento cons
				 cons consu=new cons();
				 
				 consumo = (leitura1_atual-leitura_anterior);  //Função 
				 
				   //acessar o atributos de forma  encapsulada
				 consu.setcon_1 (consumo);
				  // Cria uma instacia no encapsulamento valorsepago
				 valoraserpago valor_1=new valoraserpago();
				 
				 valor_pago = consumo*TINHA QUE ESTA AQUI;//Função
				  
				 //acessar o atributos de forma  encapsulada
				 valor_1.setvalor(valor_pago);
				
				      // Escreve o Total a ser Pago
				JOptionPane.showMessageDialog(null, "VALOR A SER PAGO= R$" + valor_1.getvalor()+"\n||||||||||||||||||||||||||||||||||||||||||||\nValor do kwh atualmente: "+TINHA QUE SER IMPRESSA AQUI+"\n||||||||||||||||||||||||||||||||||||||||||||", "Total",JOptionPane.PLAIN_MESSAGE);//mostra fatura
			    
				leituraant leit=new leituraant();//instancia
				
				leitura_anterior= leitura1_atual;  //Função
				
				leit.setleitura(leitura_anterior);//acessar o atributos de forma  encapsulada
		
				

	}
}

Obrigado por estarem me ajudando.

M

passe para o metodo imprime o valor da variavel valor_kw como parametro

assim vc tera acesso apenas para a impressao que o que você deseja…

Mas lembre que caso você precise alterar este valor e retorna-lo para a main você deve fazer que nem você fez em

valor_kwh=obj.altera(valor_kwh);

resumindo mude apenas:

ch.imprime(valor_kwh);

e

public void imprime(float (valor_kwh)

Mas se você tiver tempo tenta dar uma olhada geral na classe e planejar melhor os seus metodos, para que você tenha menos trabalho futuro
:slight_smile:

Espero ter ajudado,

Se ainda tiver dúvidas continue postando

W

Certo mais da uma lida na ultima classe e veja que não é apenas para impressão que ela será lida, ela será multiplicada por outra variável, e imprimida.

Note também que se eu fizer isso que vc me falou, o primeiro valor (valor_kw) é lido no main (é regra), é ele não será impresso até que eu joguei o comando para ele entrar na função (alterar) para receber valor e conseqüentemente ser imprimido no (imprime).

Tá valendo e muito sua ajuda!! muito obrigado!!

Eu pensei assim no começo do main eu chamei a o método (alterar) para receber o primeiro valor.

To tentando fazer aqui do jeito que vc me falou onde eu coloco esse ch.imprime(valor_kwh); ?

esse ch é instância de qual?

Muito Obrigado consegui fazer aqui!!!

Valeu mesmo primeira vez que participo aqui deste forum e é o melhor forúm de java que existe.

Muito obrigado mesmo amigo, agora é só eu esconder algumas coisas aqui e organizar como vc me disse…

Criado 3 de junho de 2010
Ultima resposta 3 de jun. de 2010
Respostas 8
Participantes 3