Int recebendo string? O!o

5 respostas
J

Galera eu vi em um livro de java, o seguinte codigo…
existe isso mesmo? nao da erro.?

String answer = "Answer";
int value = Integer.parseInt(answer.trim());

grato.

5 Respostas

pmlm

Dá erro ao executar porque não consegue converter “Answer” para inteiro. Mas sim, é código válido e compila.

A
sim realmente existe, o que acontece é que se você colocar alguma letra na string ele irá lançar uma excessão, que pode ser tratada com o try - catch, a excessão mais provavel a ocorrer é a NumberFormatException;

Neste caso a converção será feita para um número inteiro, mas tem ainda como converter para

float:  Float.parseFloat(suaString)

double:  Double.parseDouble(suaString);

para converter para outros tipos de numero inteiro pode ser usado o seguinte

byte bt = (byte)Integer.parseInt(suaString);

neste caso vc utiliza um cast, que seria como se vc estivesse assumindo o risco, no caso de um byte que esse numero nunca passaria de +/- 127;

Mas como  citei a cima, ele não pode conter letras, por isto o código a cima irá gerar um erro
Priuli

Este código gera uma exception… NumberFormatException. o livro deveria tar falando de erro alguma coisa assim ou vc entendeu errado.

J

Verdade mesmo…estava se referindo ao erro de exceção de numero.

E

O compilador até poderia dar um “warning” mas não um “error” no código abaixo:

String answer = "Answer";  
 int value = Integer.parseInt(answer.trim());

Se você quiser fazer um compilador mais complexo e lento, poderia usar algumas técnicas de análise de fluxo para determinar que inevitavelmente será gerado um NumberFormatException. Algumas ferramentas (como o FindBugs) usam técnicas similares e conseguem detectar alguns erros desse tipo.

Criado 13 de outubro de 2010
Ultima resposta 13 de out. de 2010
Respostas 5
Participantes 5