Estou tentando usar a classe Console para obter entrada do usuário, mas um objeto nulo é retornado quando ligo System.console()
. Preciso alterar alguma coisa antes de usar o System.console?
Console co=System.console();
System.out.println(co);
try{
String s=co.readLine();
}
Respostas:
Usando o Console para ler a entrada (utilizável apenas fora de um IDE):
Outra maneira (funciona em qualquer lugar):
System.console () retorna nulo em um IDE.
Portanto, se você realmente precisar usar
System.console()
, leia esta solução no McDowell .fonte
readLine()
que não existeInputStreamReader
.fonte
nextLine()
é muito confuso trabalhar com isso. Na melhor das hipóteses, você terá dor de cabeça ao tentar obter linhas inteiras do console.in.nextLine()
criaria problemas?java.util.NoSuchElementException
que não entendo direito.Existem algumas maneiras de ler a string de entrada do seu console / teclado. O código de amostra a seguir mostra como ler uma seqüência de caracteres do console / teclado usando Java.
A última parte do código usou a
java.io.Console
classe não é possível obter a instância do consoleSystem.console()
ao executar o código de demonstração através do Eclipse. Porque o eclipse executa seu aplicativo como um processo em segundo plano e não como um processo de nível superior com um console do sistema.fonte
Vai depender do seu ambiente. Se você estiver executando um UI balanço via
javaw
por exemplo, então há não é um console para exibir. Se você estiver executando em um IDE, isso dependerá muito do tratamento do IDE específico do IO do console.Na linha de comando, deve ficar bem. Amostra:
Execute isso apenas com
java
:Outra opção é usar
System.in
, que você pode agrupar emBufferedReader
linhas para ler, ou usarScanner
(agrupar novamenteSystem.in
).fonte
Encontrei uma boa resposta aqui sobre a leitura do console, aqui outra maneira de usar o 'Scanner' para ler do console:
fonte
close()
o scanner nesse caso, porque ele fechará o System.in e impedirá que seu aplicativo o leia mais tarde. (A leitura posterior gera o erro "nenhuma linha encontrada")Tente isso. espero que isso ajude.
fonte
A seguir, a resposta do athspk é transformada em uma que faz um loop contínuo até o usuário digitar "exit". Também escrevi uma resposta de acompanhamento em que peguei esse código e o testei.
Exemplo de saída:
fonte
Eu escrevi a biblioteca Text-IO , que pode lidar com o problema de System.console () ser nulo ao executar um aplicativo a partir de um IDE.
Introduz uma camada de abstração semelhante à proposta por McDowell . Se System.console () retornar nulo, a biblioteca alterna para um console baseado em Swing.
Além disso, o Text-IO possui uma série de recursos úteis:
Exemplo de uso:
Em esta imagem você pode ver o código acima executado em um console baseado em Swing.
fonte
Use System.in
http://www.java-tips.org/java-se-tips/java.util/how-to-read-input-from-console.html
fonte