Atribuindo int de um showInputDialog

5 respostas
java
FirsTShoT

Olá, estou criando um tipo de editor gráfico no qual terá a ferramenta “borracha”, na qual eu peço ao usuário o tamanho do seu raio (que será criado com um fillOval)

Sou bem novo com interface gráfica então optei pelo showInputDialog para fazer essa atribuição de valores:

String raioS = JOptionPane.showInputDialog(Digite o tamanho da borracha);

System.out.println("String raio: " + raioS);  // para acompanhar o valor da String

if (raioS != null || raioS != “”)

raioBorracha = Integer.parseInt(raioS);
Logo após essas linhas, caso não caia nas condições do If, eu mantenho o raio padrão (10) o problema é que quando

eu clico em Cancelar ou simplesmente fecho a caixa de diálogo o console emite os seguintes erros:

String raio: null

Exception in thread AWT-EventQueue-0 java.lang.NumberFormatException: null

at java.lang.Integer.parseInt(Integer.java:454)

at java.lang.Integer.parseInt(Integer.java:527)

at Janela$Apaga.actionPerformed(Janela.java:679)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6505)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6270)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4861)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2719)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)

at java.awt.EventQueue.access$200(EventQueue.java:103)

at java.awt.EventQueue$3.run(EventQueue.java:694)

at java.awt.EventQueue$3.run(EventQueue.java:692)

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

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:708)

at java.awt.EventQueue$4.run(EventQueue.java:706)

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

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

5 Respostas

M

Olá @FirsTShoT !
Se bem percebi, o seu problema é quando você clica em cancelar o programa dá o tal erro?
Só não entendi bem o seu código! Pra quê imprimir a variável raioS??

TEC.ER

Voce esta colocando um numero no campo que recebe uma string
tente desta forma.
int raios = Interger.parseint(JOptionPane.showInputDialog("Digite o tamanho da borracha"));

Lucas_Camara

A lógica do IF tá errada:

if (raioS != null || raioS != "")
    raioBorracha = Integer.parseInt(raioS);

Você quer que atribua o valor SOMENTE se raioS for diferente de null E diferente de vazio, mas a condição do IF está dizendo para atribuir se o valor for diferente de null OU diferente de vazio. Do jeito que está, vai cair no if mesmo que o valor seja nulo.

O correto é:

if (raioS != null && raioS != "") {
    raioBorracha = Integer.parseInt(raioS);
}
pmlm

Quase isso… mas o correto é:

if (raioS != null && !raioS.equals("")) {
FirsTShoT

Realmente era esse mero erro das condições do If, obrigado a todos

Criado 14 de abril de 2016
Ultima resposta 15 de abr. de 2016
Respostas 5
Participantes 5