Problemas com cast

10 respostas
RafaelCN

Boa Tarde galera :DDD

Bom, estou com um problema aqui, na verdade o resolvi hoje, agora mesmo! Mas hoje de manhã quando mostrei ao meu professor oque eu tinha feito funcionava normal sem os cast nas variáveis que coloquei:

//inicializando variáveis para uso da conversão int valor_dec = (int)Integer.parseInt(jtf.getText()); //cast para int String valor_bin = (String)Integer.toBinaryString(valor_dec); //cast para string int value_result = Integer.parseInt(jtf.getText(), 2); String bin_to_dec = (String)Integer.toString(value_result); //cast para string //-----------------------------------------------

Sem esses cast, eu consegui que o programa funcionasse normalmente! Mas agora a tarde quando fui testar antes, para depois modifica-lo, ele deu problema. Se quiser eu posso postar aqui, mas alguém pode me explicar o porque tenho que colocar cast antes do Integer porque para mim, ele ia converter oque estava no jtf para Int, String vice-versa automaticamente…

Grato!

10 Respostas

wagnerfrancisco

Qual o erro e qual versão da jdk vc tá usando? Não era pra precisar destes casts.

gilvanandre

A classe Integer é um objeto.
E a clausula int pé um tipo primitivo!

De uma olhada nesse tópico que você ira entender melhor!

Vlw

RafaelCN

Vou dar uma olhada!
Grato, e aliás eu estou usando a jdk7 :slight_smile:

lele_vader

Não era para precisar mesmo não.
A partir do jdk 5 se tem autoboxing e autounboxing.

Estranho.

RafaelCN

Mas, e para que serve o autoboxing? -ironia HUAHUASHU
Mas não está funcionando aqui, vou postar o erro pra vocês :smiley:
Especificando JDK: 1.7_04

Exception in thread AWT-EventQueue-0 java.lang.NumberFormatException: For input string: 25

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at com.rafaelnunes.calc_bin.Form.actionPerformed(Form.java:63)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$000(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)
pmlm

O problema está aqui. Aquele 2 diz que o número que estás a converter é de base 2, ou seja, só terá 0 e 1. Como pelos vistos estas a tentar passar 25, vai dar erro.

RafaelCN

É que eu não consegui fazer uma função para transformar decimal pra binário sem ser essa ;s
Mas obrigado, vou tentar criar uma classe que cuide disso, e transformar. Pode me ajudar com a lógica da transformação, sei que todo número é dividido por dois, pega se o resto e enfileira se, para se criar o número binário.

Acabei tirando o 2 como argumento da função e o programa rodou certinho! Muito obrigado! :smiley:

B

Ora, converter decimal para binário é simples - basta usar http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toBinaryString(int) ou http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toString(int,%20int) .

pmlm

Isto faz exactamente o contrário. Pega numa string binária e transforma num int (que se imprimires te mostra o numero em decimal)

RafaelCN

Já consegui resolver esses problemas, incrementei para transformar para hex também :smiley:
Agora to sofrendo para criar um jar com a interface Nimbus, porque acho que escrevi meu código de um jeito errado, e quando coloco o UIManger ele só declara como nimbus botões que estão na mesma função(Que é o de criar a tela) mas os botões estão declarados fora das funções, na classe! Para que o action performed acesse os, mas aí os botões não mudam :s

Criado 27 de agosto de 2012
Ultima resposta 27 de ago. de 2012
Respostas 10
Participantes 6