Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

falcao544

Não consigo entender!

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.