mexicanox 7 Denunciar post Postado Novembro 13, 2009 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"); } eu pesquisei e alguns lugare diziam que era melhor usar a classe DecimaFormat ou BigDecimal, so que eu nao entendi como usa-las. flws. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Novembro 13, 2009 Dá um print no Tunner, veja o que está trazendo. E se você der um ParseFloat no Tunner ? Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Novembro 16, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Novembro 19, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Novembro 20, 2009 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. Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Novembro 20, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites
mexicanox 7 Denunciar post Postado Novembro 23, 2009 huummm isso nem me passou pela cabeça valeu mesmo flws Compartilhar este post Link para o post Compartilhar em outros sites