Entrada pelo Console

7 respostas
T

olá, gostaria de fazer uma leitura de duas ou mais variáveis pelo console em uma única linha. Exemplo: “Thiago 9” , “José 8”.
Sendo que a String ‘Thiago’ seja armazenada em uma variável e o número 9 seja armazenada em outra variável ( int ).

alguém sabe como fazer isso de forma decente? desde já fico agradecido.

7 Respostas

JoaoBluSCBR

Simples, leia a String total do console.

Separe as partes usando um split, ou um StringTokenizer,

transforme a segunda parte em inteiro

Guarde as duas informacoes nos atributos determinados.

matheuslmota

JoaoBluSCBR:
Simples, leia a String total do console.

Separe as partes usando um split, ou um StringTokenizer,

transforme a segunda parte em inteiro

Guarde as duas informacoes nos atributos determinados.

Eu vi esse tópico e veio na minha cabeça, seria bem útil se existisse algo parecido com o scanf, em que o cara passa uma string com os formato das variáveis à serem lidas e um conjunto de variáveis… Algo tipo

System.in.scanf("%s%d", nome, idade);
JoaoBluSCBR

Seria, e até dá pra fazer é só adaptar isso de alguma forma:

private String input;
    
    public void lerConsole(){
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader stdin = new BufferedReader(isr);
        System.out.print("Type some data for the program: ");

        try{
            input = stdin.readLine();
        }
        catch(java.io.IOException ex){
            ex.printStackTrace();
        }

        System.out.println("Lido do teclado = " + input);
        String separados[] = input.split(" ");
        
        String nome = separados[0];
        int idade = new Integer(separados[1]);
        
        System.out.println("Nome: " + nome + "\nidade: " + idade);
    }
matheuslmota
JoaoBluSCBR:
Seria, e até dá pra fazer é só adaptar isso de alguma forma:
private String input;
    
    public void lerConsole(){
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader stdin = new BufferedReader(isr);
        System.out.print("Type some data for the program: ");

        try{
            input = stdin.readLine();
        }
        catch(java.io.IOException ex){
            ex.printStackTrace();
        }

        System.out.println("Lido do teclado = " + input);
        String separados[] = input.split(" ");
        
        String nome = separados[0];
        int idade = new Integer(separados[1]);
        
        System.out.println("Nome: " + nome + "\nidade: " + idade);
    }

Dessa forma tá meio estática. Eu tô no trabalho agora, mas hoje à noite eu vou implementar um negocio mais dinâmico e posto aqui amanhã.

T

é… a idéia seria algo como o scanf do C.

Ironlynx

thiag_ohe,
porque você não está usando java Scanner?Mais aqui:
http://download.oracle.com/javase/1,5.0/docs/api/java/util/Scanner.html

e tem muitos exemplos aqui no GUJ em tópicos antigos já discutidos!

Andre_Rosa

Essa, com toda certeza, é uma deficiência considerável da linguagem Java. Não há uma forma exata de se fazer isso em Java.

Criado 1 de agosto de 2011
Ultima resposta 1 de ago. de 2011
Respostas 7
Participantes 5