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

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

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

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

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

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 …

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.

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

[code]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
[/code]

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

[code]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
	
			

}

}[/code]

Obrigado por estarem me ajudando.

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

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…