Guardar entrada de dados numa variavel

16 respostas
B

Fala ae galera, sou novo aki no forum e tb sou novo no java gostaria de tirar uma duvida cruel.

como q eu faço pra capturar um dado do teclado e guardar numa variavel?
na linguagem c eu sei q eh assim:scanf("%tipodavariavel",&variavel).
E em java como eu fço isso?
Desde ja muito obrigado ae galera

16 Respostas

G

tipo voce manda um dialog pro usuario pra ele digitar o q quiser?
se for

String s = JOptionPane.showInputDialog("digite");

por exemplo
dependendo da variavel vc tem q fazer casts

int i = Integer.parseInt(JOptionPane.showInputDialog("digite"));
B

http://java.sun.com/javase/6/docs/api/java/io/Console.html

Console c = System.console();

String s = c.readLine();
B

Nesse caso ele vai guardar oq o usario digitou na variavel “s”?
se for ,brigadao velho!!!

G

brunomp57:
Nesse caso ele vai guardar oq o usario digitou na variavel “s”?
se for ,brigadao velho!!!

sim

B

Vlw rapaze ,vou testar quando chegar em casa!!

gabrielmskate

Eu faria assim…

import java.util.Scanner;

public class Teste {
	public static void main(String args []) {
		Scanner sc = new Scanner(System.in);
		String nome;
		int idade;
		System.out.println("Digite seu nome");		
		nome = sc.nextLine();
		
		System.out.println("Digite sua idade");
		idade = sc.nextInt();
				
		System.out.println(nome + "\n" + idade);
	}
}
gabrielmskate

Qual a diferença dos dois métodos (Scanner ou Console)??

B

Scanner é uma classe que serve para processamento em linha de InputStreams.

Console é uma classe específica para leitura de entradas via console/prompt de comandos, até facilita escrever algo como "Digite o teu nome aqui: " seguido da entrada. Outro extra é a leitura de senhas, já camufladas.

Para mim o maior ganho é não cair na besteira de ficar usando o Scanner.nextInt(), que não foi feito para ser usado com o System.in.

edmarr

Bruno Laturner:
Scanner é uma classe que serve para processamento em linha de InputStreams.

Console é uma classe específica para leitura de entradas via console/prompt de comandos, até facilita escrever algo como "Digite o teu nome aqui: " seguido da entrada. Outro extra é a leitura de senhas, já camufladas.

Para mim o maior ganho é não cair na besteira de ficar usando o Scanner.nextInt(), que não foi feito para ser usado com o System.in.

Concordo com vc !

Thiago_MuiLoko

Desculpe, não entendi isso…

O que vcs querem dizer “com não foi feito para ser usado com o System.in”?

B

Thiago MuiLoko:
Desculpe, não entendi isso…

O que vcs querem dizer “com não foi feito para ser usado com o System.in”?

Rode isto:

import java.util.Scanner;

public class ScannerTest {

   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);

      String[] nomes = new String[10];
      int[] idades = new int[10];

      for (int i = 0; i < 10; i++)
      {
         System.out.print("Nome: ");
         nomes[i] = in.nextLine();
         
         System.out.print("Idade: ");
         idades[i] = in.nextInt();
      }
   }
}

As entradas do nextInt vazam para o próximo nextLine

B

Explicando, o nextInt lê a entrada a procura de números inteiros, e ele para quando lê um outro caracter.

O nextLine lê a entrada até encontrar uma terminação de linha. No Windows a terminação de linha é feira com carriage return, line feed, em java “\r\n”.

O nextInt vai ler os números e ler o \r e o \n vai sobrar. O \n também é considerado um caracter de terminação de linha (é usado em sistemas unix), e o nextLine vai comer ele.

Ai a entrada vai parar no próximo nextInt.

O método de fazer o nextInt funcionar corretamente com o System.in é usar somente o nextLine, pegar a String e convertê-la para int com Integer.parseInt;

Thiago_MuiLoko

Hummmmmmmm… tendi…

Vlw!

gabrielmskate

Bruno Laturner:
Scanner é uma classe que serve para processamento em linha de InputStreams.

Console é uma classe específica para leitura de entradas via console/prompt de comandos, até facilita escrever algo como "Digite o teu nome aqui: " seguido da entrada. Outro extra é a leitura de senhas, já camufladas.

Para mim o maior ganho é não cair na besteira de ficar usando o Scanner.nextInt(), que não foi feito para ser usado com o System.in.

Bruno Laturner:
Explicando, o nextInt lê a entrada a procura de números inteiros, e ele para quando lê um outro caracter.

O nextLine lê a entrada até encontrar uma terminação de linha. No Windows a terminação de linha é feira com carriage return, line feed, em java “\r\n”.

O nextInt vai ler os números e ler o \r e o \n vai sobrar. O \n também é considerado um caracter de terminação de linha (é usado em sistemas unix), e o nextLine vai comer ele.

Ai a entrada vai parar no próximo nextInt.

O método de fazer o nextInt funcionar corretamente com o System.in é usar somente o nextLine, pegar a String e convertê-la para int com Integer.parseInt;

Cara, valeu pela aula…
Eu sempre usava Scanner.

B

E testando o código de novo aqui em casa encontrei um bug, ou algo parecido.

Console não funciona no Netbeans e outras IDEs, pois elas não tem console. Scanner funciona.

De volta à prancha de projetos.

gabrielmskate
É esse código aqui não Funcionou no Eclipse nem no NotePad++. Mas no prompt ele roda...
public class TesteConsole {
	public static void main(String args[]) {
		Console cs = System.console();
		String nome;
		int idade;
		System.out.println("Digite seu nome");
		nome = cs.readLine();

		System.out.println("Digite sua idade");
		idade = Integer.parseInt(cs.readLine());

		System.out.println(nome + "\n" + idade);
	}
}

Ontem eu fiquei tentando mudar o exemplo de Scanner para Console no Eclipse, e realmente não funciona...
Agora que eu voltei pro prompt ele ta rodando...

Criado 29 de setembro de 2009
Ultima resposta 30 de set. de 2009
Respostas 16
Participantes 6