Queria saber o porquê de meu programa dar NumberFormatException, sendo que se eu criar um “int x = 2 + 2 == 4”, então por que “int y = Integer.parseInt(“2 + 2”) == NumberFormatException” ?
public static void main(String[] args)
{
int soma = Integer.parseInt("2") + Integer.parseInt("2") ;
System.out.println(soma);
int a = 2 + 2 ;
System.out.println(a);
Integer b = new Integer("2 + 2");
System.out.println(b);
}
Exception in thread "main"
java.lang.NumberFormatException: For input string: "2 + 2"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.<init>(Unknown Source)
at exercicios.teste.main(teste.java:12)
Bom dia, é bem simples, o parseInt converte o tipo do valor para um inteiro, CASO seja um inteiro válido. “2 + 2” obviamente não é um inteiro válido, pois possui caracteres como o + e os espaços que não podem ser convertidos. O parseInt apenas transforma um NÚMERO inteiro que está em formato String para o tipo Integer, não faz conversões do tipo remover caracteres diferentes de número menos ainda resolve equações.
Exemplificando o que o @Rodrigo_Void explicou, veja:
// Convertendo o número 1 em inteiro
new Integer("1"); // Ok
// Convertendo a letra "a" em inteiro
new Integer("a"); // Erro: java.lang.NumberFormatException: For input string: "a"
// Convertendo o sinal "+" em inteiro
new Integer("+"); // Erro: java.lang.NumberFormatException: For input string: "+"
// Convertendo o texto "2 + 2" em inteiro
new Integer("2 + 2"); // Erro: java.lang.NumberFormatException: For input string: "2 + 2"
Não.
Até existem algumas APIs (de terceiros) que resolvem equações em String. NÃO RECOMENDO.
Ou vc pode desenvolver sua api que resolve esse tipo de informação. NÃO É FÁCIL
Isso realmente é necessário pra vc?
Rapaz, você poderia fazer isso fazendo uma busca pelos sinais aritméticos pra saber onde eles estão e assim saber qual operação será feita e depois fazer um split pra pegar os valores.