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