método readInt()  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
tucamefe
Thread.start()
[Avatar]

Membro desde: 23/03/2005 11:43:10
Mensagens: 45
Offline

Pessoal,
o metodo readInt(), para ler números do teclado, devo pegar de que classe do pacote java.io?

obrigada,
Roberta

"Feliz de quem entende que é preciso mudar muito para ser sempre o mesmo." (Dom Hélder Câmara)
tucamefe
Thread.start()
[Avatar]

Membro desde: 23/03/2005 11:43:10
Mensagens: 45
Offline

meu código:
tucamefe wrote:
public static void main(String[] args) throws java.io.IOException {
do{
System.out.println("Controle de Estoque\n");
System.out.println(" 1 - Controle de Fornecedor");
System.out.println(" 2 - Controle de Produto");
System.out.println(" 3 - Sair");
System.out.print("Digite a opção: ");
DataInputStream io = new DataInputStream(System.in);
int opcao = 0;
opcao = io.readInt();
switch(opcao){
case 1:
controleDeFornecedor();
break;
case 2:
controleDeProduto();
break;
case 3:
break;
default:System.out.println("Opção Inválida\n");
};
}while(true);


}

"Feliz de quem entende que é preciso mudar muito para ser sempre o mesmo." (Dom Hélder Câmara)
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

DataInputStream, como você já está usando.

Former LIPE.
[ICQ]
tucamefe
Thread.start()
[Avatar]

Membro desde: 23/03/2005 11:43:10
Mensagens: 45
Offline

mas ele está dando erro na execução ....
assim ó ....

java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:44
at Gui.ProgramaTeste.main(ProgramaTeste.java:161)
Exception in thread "main"
......

justamente o erro que ele aponta é no => opcao = io.readInt();

"Feliz de quem entende que é preciso mudar muito para ser sempre o mesmo." (Dom Hélder Câmara)
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

readInt não serve para ler inteiros do teclado. Ele serve para ler 4 bytes de um arquivo binário (DataInputStream).
Para ler algo do teclado, use readLine (da classe BufferedReader) e Integer.parseInt.
Em muitos lugares onde se ensina Java, os professores costumam dar uma classe "enlatada" que já faz isso para você, em vez de você ter de fazer algo como

Isso é realmente absurdo em Java.


[WWW]
tucamefe
Thread.start()
[Avatar]

Membro desde: 23/03/2005 11:43:10
Mensagens: 45
Offline

meu programa ta assim ...

public static void main(String[] args){
BufferedReader keyboardInput;
int opcao = 0;
String strLinha = "0";
try{
System.out.println("Controle de Estoque\n");
System.out.println(" 1 - Controle de Fornecedor");
System.out.println(" 2 - Controle de Produto");
System.out.println(" 3 - Sair");
System.out.println("Digite a opção: ");
keyboardInput = new BufferedReader (new InputStreamReader (System.in));
strLinha = keyboardInput.readLine();
opcao = Integer.parseInt(strLinha);
switch(opcao){
case 1:
controleDeFornecedor();
break;
case 2:
controleDeProduto();
break;
case 3:
break;

default:System.out.println("Opção Inválida\n");
};
}catch (IOException e){
System.out.println("Houve Erro de Leitura.");
}catch (NumberFormatException e){
System.out.println("Houve erro na conversão, digite apenas caracteres Numéricos.");
}
}



olha só como ele executa! o que é isso?

init:
deps-jar:
compile:
run:
Controle de Estoque

1 - Controle de Fornecedor
2 - Controle de Produto
3 - Sair
Digite a opção:
Houve erro na conversão, digite apenas caracteres Numéricos.
BUILD SUCCESSFUL (total time: 1 second)

ELE EXECUTA DIRETO SEM ESPERAR QUE EU digite alguma coisa!!!!

"Feliz de quem entende que é preciso mudar muito para ser sempre o mesmo." (Dom Hélder Câmara)
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team