Entrada e Saída em JAVA
Autor: Carlos Oliveira | Publicado: 2011-03-14T06:33:00-07:00

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pois bem, após conseguirmos fazer nosso primeiro programa em JAVA, podemos começar a saber direitinho o conceito dos termos de entrada e saída desta linguagem de programação. Para podermos desfrutar dos comandos de saída desta linguagem não precisaremos usar o comando import, pois os comandos necessários para saída já estão contidos no pacote java.Lang, já para os comando de entrada, importaremos o pacote java.util.Scanner, que funcionará como&nbsp; o scanf em C. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Para comandos de saída usaremos o console, para desfrutarmos disso temos o comando System.out.println(“seu texto aqui”); para imprimir o texto no console do compilador. Por exemplo, transcreverei todo um código aqui para mostrar uma linha de texto comum e que já usamos antes o Hello World: &nbsp; public class HelloWorld{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(“Hello World!”); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.exit(0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; O comando println(print line) serve para imprimir algo no console, seguindo este formato: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(lista_de_controle, lista_de_argumentos); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Como você pode perceber , temos antes do println os comandos System.out, significa o seguinte, dentro do pacote java.Lang, temos o “subpacote” dele chamado java.Lang.System, e dentro desta classe temos o comando out, que significa saída, e dentro deste out temos comandos de saída de dados, como o println. A separação destes pacotes por pontos se deve ao encapsulamento, pelo fato de um comando estar dentro de outro, como no caso do out e println, o comando println está encapsulado em out que está encapsulado em System que está encapsulado em Lang que por fim está encapsulado em java. Mais tarde veremos o conceito de superclasses. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Para comandos de entrada precisaremos importar o pacote Scanner, declarando-o antes da classe: &nbsp; import java.util.Scanner; public class Saida{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static Scanner scan = new Scanner(System.in); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String teste; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(“Digite alguma string:”);  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; teste = scan.nextLine(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } } &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Assim conseguimos ler nossa primeira string, atente para a linha de leitura teste = scan.nextLine(); e perceba que atribuimos um comando à string teste, que é scan.nextLine(); e note também que mais acima declaramos scan em private static Scanner scan = new Scanner(System.in); e que basicamente quer dizer o seguinte: uma função privada(só essa classe conhece), estática (não muda durante o programa) do tipo Scanner (ou leitura), com o nome de scan (mais simples, mas pode colocar o que quiser) está sendo atribuída a um novo Scanner (pois tenho que declarar para o programa reconhecer) que usa System.in (assim como o out de saída, temos o in de entrada no pacote System). &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Entretanto, contudo, todavia, nem tudo é um mar de rosas como declarar a entrada de dados para strings, pois temos outros formatos como double, int, char e float, pelo menos nos básicos, e digamos que variáveis como bytes são de usos mais ‘avançados’ por assim dizer. Para podermos fazer leitura de uma variável do tipo int precisamos de: mudar o tipo de variável que queremos para leitura (óbvio diga-se de passagem), e também modificar a linha de leitura de dados, onde estávamos lendo string no código anterior, e deixemos da seguinte maneira: teste = Double.parseDouble(scan.nextLine()); , e que quer dizer que estamos lendo uma variável do tipo Double, e queremos que seja lida como Double, então convertemos de string para Double, por isso o parseDouble, pois tudo que é lido vem no formato de String, por isso que quando desejamos ler realmente uma String não precisamos de algo do tipo String.parseString, já podemos ir direto para o scan.nextLine();, e este tem o significado de que usamos nosso comando que usa a função Scanner, que no nosso caso é o scan, e pedimos para ler a próxima linha, que é onde os dados serão lidos. Para ler uma variável do tipo int, só trocaremos o Double.parseDouble(scan.nextLine(); por Integer.parseInt(scan.nextLine());, fácil não? Agora tente você com o float e veja no que dá! Já para o char, temos algo mais diferente, e não é só colocar Character.parseChar(scan.nextLine());, aposto que você pensou que seria fácil assim, para podermos ler uma variável do tipo Char, leremos ele como ‘string’, colocando apenas a linha de comando na hora da leitura teste = scan.nextLine().toCharArray();, isso quer dizer que, estamos lendo uma string, porém quero trabalhar com cara caractere separado, para isso precisamos lançar para um array, ou vetor se preferir assim, para isso não finalizamos a linha em nextLine(), mas adicionamos mais um comando que ‘existe’ em nextLine() que é toCharArray(), este nos fazendo com que cada caractere seje trabalhado separadamente. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Agora você pensa: “Beleza, agora sei como trabalhar com o básico de entrada de dados em JAVA, mas cadê a saída desses dados?Quero, também, poder ler uma variável e depois mostrá-la na tela! Isso é possível?”. Meu caro, praticamente TUDO é possível de se fazer com linguagem de programação, se não TUDO mesmo, a imaginação é o limite, embora algumas linguagens também sejam bastante limitadas, o que nos faz preferir outras. Aqui, a coisa é parecida com a hora que você mostra na tela em linguagem C, por exemplo, em C para mostrar algo na tela, com uma variável você fazia assim, vou usar de exemplo um int: printf(“%d”, variavel); certo?; Em JAVA, após a leitura da variável, ou após ‘setar’ o valor de determinada variável no próprio código fonte, não esquecendo que inicializar uma váriavel logo na declaração da mesma é uma boa prática de programação e é ALTAMENTE RECOMENDÁVEL, usaremos este comando: System.out.println(“blablablabla “ + variavel); simples não? Não se precisa de algo como %d, %c, %s, etc… Quando você coloca o + e&nbsp; o nome da variável, o compilador concatena, ou seja aloca o valor da variável à string que você provavelmente colocou entre aspas, mas não necessariamente você precisa colocar uma string antes ou depois, apenas lembre-se de que ao colocar uma string no começo coloque um + depois dessa string para poder colocar a variável, caso contrário é erro de sintaxe, e se colocar depois da variável, coloque um + depois do nome da variável, caso não coloque nenhuma string neste comando, não precisa de nenhum +. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pois bem, desculpem a demora do post, as coisas no trabalho tem sido corridas, e tenho escrito este post aos poucos, qualquer coisa/dúvida/erro meu ou mesmo seu, podem me enviar email: carlospecter@gmail.com. Abraços a todos! E até a próxima (: