• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mr.oculus

comando "leia" em java

9 mensagens neste tópico

olá, sou novo em java e gostaria de saber como é, qual é  o comando "leia" em java,

em pascal é assim:

read(variavel);

como é em java?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

suponho que esse tal de leia seja para ler uma string da consola, se for podes usar a classe java.io.console ou entao usar o System.in

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tem algum comando especifico?

system.in.read (variavel)?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não faço ideia do que será o comando "leia", nunca ouvi falar. Se estás a falar de ler dados do teclado então existem várias formas de fazer isso, sendo que o magician já te indicou duas delas.

Podes explicar melhor o que queres dizer com isso de comando "leia"?, qual é o objectivo?

Ler um número e ler um nome são duas coisas diferentes. O método read() fornecido pela stream padrão System.in devolve o que leu, não recebe a variável para onde vai ler.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pra ficar melhor o entendimento resolve um exercicio q eu vejo como q se faz

1) ler nome, idade e salário e escrever na tela

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que percebi, ele tem em pseudocódigo uma chamada a "leia", e agora quer traduzir para Java.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Três métodos diferentes:

    public void lerComTokenizer() {
        try {
            StreamTokenizer st = new StreamTokenizer(new InputStreamReader(System.in));
            System.out.println("Introduza o nome: "); 
            st.nextToken();
            String nome = st.sval;
            System.out.println("Introduza a idade: ");
            st.nextToken();
            int idade = (int)st.nval;
            System.out.println("Introduza o salario: ");
            st.nextToken();
            double salario = st.nval;
            System.out.println("Sr(a) " + nome + " com " + idade + " anos e salario de " + salario);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

public void lerDadosComStreams() {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Introduza o nome: ");
            String nome = br.readLine();
            System.out.println("Introduza a idade: ");
            String idade = br.readLine();
            System.out.println("Introduza o salario: ");
            String salario = br.readLine();
            
            System.out.println("Sr(a) " + nome + " com " + idade + " anos e salario de " + salario);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void lerDados() {
        try {
            int c;
            System.out.println("Introduza o nome: ");
            StringBuffer aux = new StringBuffer();
            while ((c = System.in.read()) != -1) {
                if (c == 10) {
                    break;
                }
                aux.append((char) c);
            }
            String nome = aux.toString();

            aux = new StringBuffer();
            c = 0;
            System.out.println("Introduza a idade: ");
            while ((c = System.in.read()) != -1) {
                if (c == 10) {
                    break;
                }
                aux.append((char) c);
            }
            String idade = aux.toString();

            aux = new StringBuffer();
            c = 0;
            System.out.println("Introduza o salario: ");
            while ((c = System.in.read()) != -1) {
                if (c == 10) {
                    break;
                }
                aux.append((char) c);
            }
            String salario = aux.toString();

            System.out.println("Sr(a) " + nome + " com " + idade + " anos e salario de " + salario);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

No primeiro método usa-se o StreamTokenizer que ajuda em algumas situações, a classe possui métodos para verificar qual o tipo de dados que o utilizador introduziu, se foi numérico ou string e podes usar as variáveis que já possuem o tipo convertido correctamente. É mais útil quando se está a fazer um parsing de linhas de texto vindas de ficheiros.

O segundo método usa buffers para ler os dados, lê linha a linha. Não estou a validar o que o utilizador está a introduzir, precisarias de mais lógica para saber que tipo de dados foram introduzidos e se, por exemplo, no salário não foi introduzido um nome.

O último método é o mais simples, não faz uso de streams além da stream de entrada padrão definida por System.in e lê um conjunto de bytes que depois devolve como um inteiro, no caso de estares a introduzir texto devolve o valor inteiro que corresponde às teclas introduzidas.

Dependendo do objectivo qualquer um dos 3 métodos pode ser usado para ler dados de qualquer stream, neste caso estamos a ler os dados do teclado e a enviar para o ecrã apartir da stream de entrada, System.in, para a stream de saída, System.out.

Só uma nota, ignora as linhas de código com  "Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);", são adicionadas automaticamente pelo IDE que uso, embora tenham muito utilidade, para o exemplo não servem de muito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora