falcao544 11 Denunciar post Postado Junho 24, 2010 Olá pessoal! Sou iniciante em Java mas já fiz curso de Lógica de programação e C ! Agora estou indo para o Java! Estou lendo o livro Java - Como programar da Deitel! Aí me deparei com uma dúvida! Pode me explicar passo-a-passo o que essa linha faz? Scanner input = new Scanner( System.in ); Compartilhar este post Link para o post Compartilhar em outros sites
F0X 1 Denunciar post Postado Junho 24, 2010 da uma olhada aqui http://www.fatecinformatica.com/explicando-a-classe-scanner/ caso n de para entender a abixo /* Olá¡ crianças, vamos falar sobre uma classe muito utilizada em java, o Scanner! Como alguns já sabem, em orientação a objetos os programas sao divididos em várias classes, para melhorar a manutenção/correção de erros… Por exemplo em um programa de caixa eletrônico (quem leu o início do Deitel vai lembrar), existe a classe “Cliente” e a Classe “MovimentarConta”, onde MovimentarConta vai importar alguns métodos da Classe “Cliente”… O mesmo acontece com o Scanner! Os p**** loucas sem namoradas que criaram a linguagem java, criaram um monte de classes pra facilitar a vida da galera e colocaram na biblioteca java (JDK) A sintaxe é simples para chamar a classe para o seu programinha em java: Fora da declaração do nome da classe, você importa a classe: “import java.util.Scanner” (aconselho a trocar o Scanner por *, assim se você for utilizar outra coisa da classe util vai ser mais tranquilo… vai ficar assim: “import java.util.*” Depois de iniciar o método principal (main), vamos instanciar Sigam o programinha ai de baixo… */ //importando import java.util.*; //nome da classe tem que ser igual ao nome do Arquivo.java public class ExemploScanner { /*aqui estamos dizendo que este é o método principal de nosso programinha em java ele é público (se não for público ninguem vai usar o programa, ele é static void, ou seja vai rodar do início ao fim sem ficar subindo e descendo igual em linguagens estruturadas como pascal, visual basic, etc, main porque é o método principal da aplicação*/ public static void main (String args[]){ /*”Scanner” é o que estamos instânciando para dentro de nosso programa, “entrada” é o nome que atribuimos ao objeto, poderia ser qualquer coisa: coco, sabaoneutro, e, entrada, odeiojava, etc… “= new Scanner” você está dizendo que “entrada” é o novo objeto que criou com base nos métodos da classe Scanner “(System.in)” foi algo que o cara que criou a classe estipulou que devia ser escrito, quando vocês forem criar suas próprias classes (espero que em breve) entenderão direito o que estou falando… */ Scanner entrada = new Scanner (System.in); //declarando as variáveis String nome; int idade = 0; //mensagem antes da entrada de dados System.out.println (”Digite seu nome:”); /* a variável nome recebe o método entrada que foi declarado lá atrás, notem que quando se trata de uma String não usamos “nextString()”, e sim o “nextLine()” (isso é coisa dos nossos amigos programadores/criadores da linguagem java)*/ nome = entrada.nextLine(); //mensagem antes da entrada de dados System.out.println (”Digite sua idade:”); //já aqui usamos o “nextInt()” mesmo… isso vale pra Float, Double, etc (menos Char) idade = entrada.nextInt(); /*aqui imprimimos o resultado de nossa brincadeira, lembrem-se de sempre colocar o “+” para concatenar o texto exibido entre aspas e as variáveis aquele “n” que coloquei ali, pula uma linha (para não tem que escrever “System.out.ptintln” novamente*/ System.out.println (”Seu nome é “+nome+”, e sua idade é: “+idade+”!nParabens, você já sabe pra que serve a Classe Scanner…”); /*e aqui acabamos nossa breve explicação sobre Scanner… qualquer dúvida grite: softwarelivrenow@gmail.com PS: pode complilar que roda!!!*/ } } Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Junho 24, 2010 Valeu F0X! Deixa eu ver se entendi! Você declara entrada como um objto do tipo Scanner? Porque no livro aqui diz que entrada é uma variavel declarada como Scanner! Aí você pega e poe Scanner( system.in ); para que o computador saiba que algo será pego da tela com Scanner e o system.in traduz os bytecodes certo? Valeu! Se quiser, eu ponho a definição do livro(8ª edição)! Abrss! Compartilhar este post Link para o post Compartilhar em outros sites
F0X 1 Denunciar post Postado Junho 24, 2010 Não sei "como" a jvm traduz a entrada do system.in.... Porque no livro aqui diz que entrada é uma variavel declarada como Scanner! System.in não é bem uma variável, ela é um parâmetro para o método (construtor) Scanner. Onde a classe System existe o método "in" que resgata o valor digitado no console... Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Julho 5, 2010 Nesse caso, "in" trata-se de uma variavel estática da classe System q recebe automaticamente da JVM um objeto que representa o fluxo do disposito de entrada padrão do computador. Então quando você está fazendo isso: Scanner input = new Scanner(System.in); você está passando p o Scanner qual fluxo de dados ele deve usar p ler os dados. Nesse caso a entrada padrão do computador( teclado ). Isso é perfeito pq você pode usar o Scanner p ler de qualqer fluxo: arquivo, rede etc; Abrçs http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 12, 2010 Bom, vejam se eu estou certo! Andei olhando esse código e ACHO que cheguei em uma resposta correta! Bom, primeiro ele declara a varável input como sendo do tipo scanner, assim como uma variável pode ser do tipo Int, char e etc... certo? Aí que atribui à variável input um objeto do TIPO Scanner que recebe o que o usuário digita! Bom, a minha conclusão está correta? valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Julho 14, 2010 Bom, vejam se eu estou certo! Andei olhando esse código e ACHO que cheguei em uma resposta correta! Bom, primeiro ele declara a varável input como sendo do tipo scanner, assim como uma variável pode ser do tipo Int, char e etc... certo? Aí que atribui à variável input um objeto do TIPO Scanner que recebe o que o usuário digita! Bom, a minha conclusão está correta? valeu! Pense desse jeito: a variavel input possui uma referencia a um objeto Scanner que recebe no seu construtor o fluxo de dados da entrada padrão(teclado). Abraço Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 14, 2010 Ah! Valeu! Era isso que queria! Saber se o Scanner do Scanner(System.in) era um nome qualquer ou se era um "tipo" de objeto(To começando agora orientação a objetos, por isso imaginei que existisse tipos!). E só para confirmar o input é uma variável do tipo Sanner? Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Julho 14, 2010 Sim é... Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 14, 2010 Muito obrigado pela atenção e pela paciência Giovanni! E pode deixar que vou me dedicar bastante ao Java - Como Programar, pra voltar com dúvidas menos "idiotas" e movimentar mais esse fórum de Java poruqe tá muito parado! Compartilhar este post Link para o post Compartilhar em outros sites