Galera, alguém pode me dizer porque o código abaixo não respeita o valor informado para x ??? Mesmo que eu digite uma letra, ele imprime um número doido. Obrigado desde já!
import java.io.IOException;
public class Teste {
public static void main(String[] args) {
AreaCalculavel q = new Quadrado(4);
AreaCalculavel r = new Retangulo(2, 4);
AreaCalculavel c = new Circulo(4);
try {
int x = 0;
x = System.in.read();
System.out.println(x);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(q.calculaArea());
System.out.println(r.calculaArea());
System.out.println(c.calculaArea());
}
}
Se você digitar uma letra, o Java irá pegar o seu código Unicode e tratá-lo como um int.
Por exemplo, é possível fazer a seguinte conversão:
int charTest = 'a';
System.out.println(charTest);
O resultado exibido no console será o número 97, que equivale ao valor Unicode do char ‘a’.
O problema é que o System.in.read() pega o valor char do que você digitar, ou seja, se fizer o seguinte:
int readTest = System.in.read();
System.out.println(readTest);
E depois digitar o número 2 no console, o Java irá reconhecê-lo como ‘2’, e retornar o número 50 como saída.
O que você pode fazer é utilizar a classe Scanner (disponível em Java 5) ou codificar algo parecido com o seguinte:
try {
char x = 0;
Integer resultadoNumerico = null;
x = System.in.read();
resultadoNumerico = new Integer(String.valueOf(x));
System.out.println(resultadoNumerico.intValue());
} catch (IOException e) {
e.printStackTrace();
}
Legal Felipe, muito obrigado pela ajuda!!! Abraços