Jump to content

Ler do standard input significa realmente o que?


krd7

Recommended Posts

Boa tarde a todos!

Venho por este meio colocar uma dúvida que me surgiu ontem ao tentar fazer um trabalho para a escola.

Eis que me é pedido o seguinte:  " Elabore um programa que lê do standard input um número inteiro ... " .

Ora, eu até agora, quando me foi pedido para receber dados do teclado noutros programas, simplesmente usei:

import java.util.Scanner;public class Exe1 {
   public static void main(String[] args) {
        int num_1;
        Scanner input = new Scanner (System.in);
        System.out.println("Insira um número inteiro e de seguida pressione ENTER");
        num_1 = input.nextInt();
    }
}

Não tenho é agora a certeza se isto se pode considerar como leitura do standard input ou se tenho que fazer desta forma  [ usando Sytem.in.read() ]  :

int convert_num = 0;
int caracter;
while ((caracter = System.in.read ()) != '\n') 
   if (caracter >= '0' && caracter <= '9')  { 
      convert_num *= 10;
      convert_num += caracter - '0';  
   }

/ ** Neste caso estão mais partes colocadas dado que o que preciso do teclado é receber um número inteiro
    *problema deste método é quando preciso de receber dez números em separado desoriento-me. */

Portanto a dúvida principal será: ler do standard input, qual dos métodos está correcto (isto se algum deles estiver)?

(Peço desculpa por não ter utilizado o GeSHi mas não consegui que funcionasse.)

Obrigado desde já.

Cumprimentos.

Link to comment
Share on other sites

Bem, ambos os métodos lêem do standard input, que é simplesmente um canal que é aberto pelo sistema para introduzir dados no programa.

No construtor do Scanner é suposto passar-se um objecto de uma classe qualquer que implemente a interface InputStream. Neste caso, estás a passar-lhe o "standard input stream" (System.in), ou seja, o standard input.

Portanto, se não houver nenhuma restrição específica quanto à utilização do Scanner (eu tive uns trabalhos em que não podíamos usá-lo), ambas as utilizações estão correctas.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.