Ajuda com código

Estou no primeiro semestre do curso de sistemas de informação.
Havíamos aprendido como fazer um “Olá Mundo!” em java, declaração de variáveis em String e declaração de Integers. Na prova dele ele veio pedir para fazer uma calculadora que mostrasse o valor da fórmula E=mc².
Errei na prova, tenho certeza, mas resolvi tentar escrever em casa…
Já consegui fazer com que faça o cálculo e o resultado saia no cmd porém ainda não entendi como fazer para o resultado sair em uma janela. Segue abaixo meu código. Se puderem me ajudar em como simplificar ele, principalmente na parte da variável “e” que ainda não entendi direito aquela lógica.
import javax.swing.JOptionPane;
public class calculoemc{
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,“Calculadora E=mc²”);
Integer m = Integer.parseInt (JOptionPane.showInputDialog(“Valor de m”));
Integer c = Integer.parseInt (JOptionPane.showInputDialog(“Valor de c”));
Integer e = Integer.parseInt (m + " * " + c + " * " + c + “=” + (m * c * c));
JOptionPane.showMessageDialog (null,"E = "+e);
}
}

Mas isso é mais que suficiente para responder essa questão.

algum erro? Pois a maneira que você fez deveria funcionar, exceto por isso.

Afinal, a primeira parte da String não poderá ser transformada em um Integer: m*c*c não é um inteiro válido.

Exception in thread “main” java.lang.NumberFormatException: For input string: "2 * 2 * 2=8"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at calculoemc.main(calculoemc.java:7)

Isso é o que sai no cmd… eu queria que o valor fosse exposto quando eu digitasse o JOptionPane.showMessageDialog (null, "E = "+e);

Você precisa entender que uma coisa é diferente de outra. Você só pode transformar em um número inteiro aquilo que realmente é um número inteiro, assim como, só transforma em um float um número que é float.

Integer x = Integer.valueOf("100"); //Vai funcionar
Integer y = Integer.valueOf("ABC"); //Não vai funcionar
Float w = Integer.valueOf("100.33"); //Vai funcionar
Float a = Integer.valueOf("100/33"); //Não vai funcionar

Sacou?

Aprender sobre o que as exceções “dizem” é fundamental. Veja, Number = número, format = formato, com um pouquinho só de imaginação você supõe que a exceção “formato de número” se deve ao fato de que você tem alguma coisa que não é um número ou não representa um número, na sua concepção.

Infelizmente não consegui entender direito… tudo que eu vi até agora nas aulas apliquei naquele código que escrevi… O valor de “e” não está sendo mostrado da forma que quero por este ser do tipo Integer, certo?
Teria alguma forma de eu arrumar isso?

Cara, esquece programação. Ok?
Agora faz esse exercício: quais das opções abaixo representa números, inteiros ou não (considere a separação de casas decimais como sendo feita por ponto):

a) "100"
b) "300.30"
c) "200 + 20"
d) "120 * 13.2"
e) "22,22"
f) "300"
g) “22.34 / 7”

Consegue me dizer quais são?
Por que as opções que não foram marcadas não representam números?

1 curtida

Eu acho que entendi…
Eu devo converter a variável e em uma string para que ela possa ser mostrada quando eu solicito um showMessageDialog, certo?

Cara, de novo, ESQUECE A PROGRAMAÇÃO e responda o que perguntei ali.

1 curtida

Eu tinha respondido

a) “100” // Inteiro

b) “300.30” // Representa

c) “200 + 20” // Não representa, pois o sinal de soma não representa um número

d) “120 * 13.2” // Não representa, pois o sinal de multiplicação não representa um número

e) “22,22” // Não representa pois a vírgula não representa um número decimal

f) “300” // Representa

g) “22.34 / 7” // Não representa pois o sinal de divisão não representa um número.

Considerando isso, você entende que

Isso nunca vai ser um número?
Assim sendo, você precisa, sempre, separar as coisas em partes coerentes.