Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
beleza pessoal !!!!!!!!!!
seguinte, eu to fazendo um trabalho da escola, na verdade ja esta pronto so que eu to tendo um pequeno problema.
Resumindo o que eu fiz foi criar um JOptionPane e colocar as opções de um radio, tipo aumentar volume, mudo, AM/FM etc.
O que acontece é que tem o tunner do radio, por exemplo se eu estou na radio 102.1 e aumento o tunner deveria de ir para a radio 102.2. Entao o que qualquer iniciante faria e foi o que eu fiz somei 0.1 no tunner so que o resutado que saiu continuando o exeplo acima foi 103.2
para ficar mais claro os resutados sao esses, lebrando que estou pegando o valor atual do tunner e somando 0.1.
Frequencia: FM
Tunner: 103.2
--------------------------------------
Frequencia: FM
Tunner: 104.299995 - Aqui deveria ser 103.3
--------------------------------------
Frequencia: FM
Tunner: 105.399994 - Aqui deveria ser 103.4
--------------------------------------
Frequencia: FM
Tunner: 106.49999 - Aqui deveria ser 103.5
--------------------------------------
Frequencia: FM
Tunner: 107.59999 - Aqui deveria ser 103.6
--------------------------------------
Frequencia: FM
Tunner: 108.69999
--------------------------------------
Frequencia: FM
Tunner: 109.79999
--------------------------------------
Frequencia: FM
Tunner: 110.89999
--------------------------------------
Como eu faço para funcionar do jeito que eu preciso?
O metodo que aumenta o tunner é esse
//Tunner Aumenta
public void setAumentaTunner(){
if(frequencia.equals("FM") && tunner == 108.0f) tunner = 87.5f;
else tunner += 0.1f;
if(frequencia.equals("AM") && tunner == 172.0f) tunner = 52.0f;
else tunner += 1.0f;
System.out.println("Frequencia: " +frequencia +"\nTunner: " +tunner +"\n--------------------------------------\n");
}flws.
consegui resolver parte do problema, na verdade o que estava acontecendo era apenas um erro de logica do jeito que estava sempre caia nos dois "else" entao aumentava sempre 1.1 e nao o 0.1 que eu equeria, o metodo consertado ficou assim:
public void setAumentaTunner(){
//verifica a frequencia da radio
//caso seja FM
if(frequencia.equals("FM")){
//se estiver no fim da frequencia volta para o inicio
if(tunner >= 108.0f) tunner = 87.5f;
//senao aumenta 0.1
else tunner += 0.1f;
}else{ // idem acima, porem para AM
if(tunner >= 172.0f) tunner = 52.0f;
else tunner += 1.0f;
}
}
o problema agora é que vem um monte de casa decimal e eu queria apenas 1, o que ta saindo agora é:
102.299995
102.399994
102.49999
102.59999
102.69999
102.79999
102.89999
102.999985
103.09998
103.19998
103.29998
103.39998
O que eu to querendo agora é pegar so a primeira casa decimal tipo:
102.3
102.4
102.5
102.6
102.7
102.8
...
fwls
>
o problema agora é que vem um monte de casa decimal e eu queria apenas 1, o que ta saindo agora é:
102.299995
102.399994
102.49999
102.59999
102.69999
102.79999
102.89999
102.999985
103.09998
103.19998
103.29998
103.39998
O que eu to querendo agora é pegar so a primeira casa decimal tipo:
102.3
102.4
102.5
102.6
102.7
102.8
...
fwls
Use saida formata...
System.out.printf("%.1f",valor);
O ".1" entre % e o f permite formatar a saida de modos que seje apresentada apenas uma casa decimal depois da parte inteira...Mas atenção, isso pode gerar um pequeno problema. Por exemplo, se o valor for igual a 23.395 será impressso 23.4, porque ele automaticamente arredonda por excesso.
Mas como podemos notar, existe um padrão que é: fequencia é sempre igual a um numero de 4 digitos(ex:102.2), que se fossemos a contar em caracter teriamos 5(1,0,2,.,2) porque o "." tbm conta. Então você pode fazer o seguinte: antes de imprimir converta a frequencia em String e depois imprima apenas os 5 caracteres desejado.
Por exemplo:
float num=102.299995F;
String numConvertido = ""+num;
System.out.printf("%s",numConvertido.substring(0,5));
Espero ter ajudado... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Abraço
o problema é que eu preciso de msotrar o resultado em um JOptionPane.
ja vi em alguns lugares falando para usar a classe DecimalFormat. Se essa for uma boa opcao eu quero saber como usar a classe por que eu nao entendi direito.
flws.
>
o problema é que eu preciso de msotrar o resultado em um JOptionPane.
ja vi em alguns lugares falando para usar a classe DecimalFormat. Se essa for uma boa opcao eu quero saber como usar a classe por que eu nao entendi direito.
flws.
Cara é só trocar...
>
float num=102.299995F;
String numConvertido = ""+num;
System.out.printf("%s",numConvertido.substring(0,5));
use assim:
float num=102.299995F;
String numConvertido = ""+num;
javax.swing.JOptionPane.showMessageDialog(null,numConvertido.substring(0,5));
Se quiser saber como funciona a classe DecimalFormat o jeito é fussar no javadoc ... Abraço
flw http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
huummm isso nem me passou pela cabeça
valeu mesmo
flws
Dá um print no Tunner, veja o que está trazendo.
E se você der um ParseFloat no Tunner ?