• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ex-dead

Ler do teclado

21 mensagens neste tópico

boas pessoal...

ora eu ando a tentar aprender java.. e fiquei com uma duvida...

criei isto a partir d um manual q andava a ler...

public class Funcionaria{

private String nome;
private String endereco;
private int idade;

	public Funcionaria (String a, String b, int c){

		nome = a;
		endereco = b;
		idade = c;
	}

public static void main (String []args){
	Funcionaria func;
	Funcionaria func2;
	func = new Funcionaria("Joana", "Rua aqui",26);
	func2 = new Funcionaria("Ana", "Rua Ali", 36);	

	func.imprimir();
	func2.imprimir();
}
public void imprimir(){
	System.out.println('\n' + "Nome: " + nome);
	System.out.println("Endereco: " + endereco);
	System.out.println("Idade: " + idade);

} 
}

eu compilo isto pela linha de comandos do windows..

o q eu gostava de fazer era em vez d eu inserir os nomes no código.. gostava q fosse o utilizador a inserir a partir do teclado na linha de codigo?

sou mt novo no java... espero q m possam ajudar..

cumps.. e desde ja obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes também usar o Scanner com o System.in algo tipo

Scanner sc = new Scanner (System.in);

peço desculpa pela ignorancia... mas.. como implemnto isso no codigo acima? :\

tou mais verdinho no java do q pensaste...

mais uma vez desculpem a ignorancia :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tive a pesquisar um pouco e encontrei isto num exercicio:

class Bemvindo{
     public static void main (String []args){
          String nome;
          System.out.print ("Introduza o seu nome");
          nome = Keyboard.readLine();
          System.out.println("Olá" + nome+ "Bemvindo ao JAVA!");
     }
}

quando compilo isto aparece me o seguinte:

cannot find symbol: variable Keyboard

location: class Bemvindo

                                 nome=Keyboard.readLine();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

onde foste encontrar essa classe ... Keyboard ?

boas porogramacoes

ps: experimenta a usar a ckasse Scanner ....

viste o que o magician disse ... entao usa aquele codigo no teu codigo na main ... e usa a variavel sc que foi inicializda. depois e veres os metodos da classe Scanner que te interessam ... procura sempre mais info .... :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

onde foste encontrar essa classe ... Keyboard ?

boas porogramacoes

ps: experimenta a usar a ckasse Scanner ....

viste o que o magician disse ... entao usa aquele codigo no teu codigo na main ... e usa a variavel sc que foi inicializda. depois e veres os metodos da classe Scanner que te interessam ... procura sempre mais info .... :)

encontrei num exercicio num site qq..  :\

hmm bem.. o q eu fiz foi isto

 import java.util.*;

public class Teste2{

private String nome;

	public Teste2(String a){

		nome=a;
	}

	public static void main (String []args){

		System.out.print("Escreva o seu nome: " );
		Scanner sc = new Scanner( System.in );
		sc.nextLine();

		System.out.println("O seu nome e: " + nome);
	}
}

agora isto ta m a dar um erro...

o erro e o seguinte: " non-static variable nome cannot be referenced from a static context"

este erro ta a dar na linha: System.out.println("O seu nome e: " + nome);

obrigado por toda a ajuda! ^^

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Arranjei uma forma de pôr isto a funcar mas com mais umas quantas linhas de codigo..

o codigo é:

 import java.io.*;

public class Teste{

private String nome;

	public Teste(String a){

		nome = a;
	}

public static void main (String []args){

	System.out.print("Escreva o seu nome: ");
	BufferedReader in = new BufferedReader (new InputStreamReader (System.in));

	String nome = null;

	try{
		nome = in.readLine();
	}catch (IOException ioe){
		System.out.println("IO erro tentando ler o nome");
		System.exit(1);
	}

	System.out.println("\n"+"Voce digitou: " + nome);
}
}

desta forma o programa funciona... mas com algumas linhas a mais em relaçao a Scanner sc = new Scanner (System.in)..

se me puderem dizer como deixar o prog a funcar com Scanner sc = new Scanner (System.in) agradecia :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O scanner tem algumas vantagens consegue ser apenas uma String ou um Int ou reconhecer padrões, normalmente uso mais o Buffered para ler ficheiros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O scanner tem algumas vantagens consegue ser apenas uma String ou um Int ou reconhecer padrões, normalmente uso mais o Buffered para ler ficheiros.

pois mas com o scanner ta m a dar um erro... devo ter feito qq coisa mal mas nao tou a ver o quê :\

" non-static variable nome cannot be referenced from a static context"

O erro ta a dar na linha:

System.out.println("O seu nome e: " + nome);

se puderem dizer o q tou a fazer de mal agradecia!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estas a chamas uma variável de instância para um método static ou seja estas a chamar uma variável não static para um método static.

Para fazer isso dessa maneira tens que definir a variável nome como static.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estas a chamas uma variável de instância para um método static ou seja estas a chamar uma variável não static para um método static.

Para fazer isso dessa maneira tens que definir a variável nome como static.

quando eu declaro a variavel como static.. o programa quando executa pede me o nome e aguarda q eu pressione enter.. depois de carregar no enter aparece a mensagem "o seu nome e: null"

em vez de aparecer o q eu escrevi aparece a palavra "null"...

desculpem tanta pergunta num programa tao simples..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta lá assim

import java.io.*;

public class Teste{

private static String nome;


public static void main (String []args){

	System.out.print("Escreva o seu nome: ");
	BufferedReader in = new BufferedReader (new InputStreamReader (System.in));
  
	try{
		nome = in.readLine();
	}catch (IOException ioe){
		System.out.println("IO erro tentando ler o nome");
		System.exit(1);
	}

	System.out.println("\n"+"Voce digitou: " + nome);
}
}
[code]

[/code]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta lá assim

import java.io.*;

public class Teste{

private static String nome;


public static void main (String []args){

	System.out.print("Escreva o seu nome: ");
	BufferedReader in = new BufferedReader (new InputStreamReader (System.in));
  
	try{
		nome = in.readLine();
	}catch (IOException ioe){
		System.out.println("IO erro tentando ler o nome");
		System.exit(1);
	}

	System.out.println("\n"+"Voce digitou: " + nome);
}
}
[code]

[/code]

Assim funca mas em relação ao tamanho do codigo é maior do q com o Scanner, dai a minha insistência em querer por isto a funcar com o scanner...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tão nesse codigo basta trocares o Buffered pelo Scanner e fica a funcionar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uma pergunta... para q serve a linha de codigo:  System.out.println("IO erro tentando ler o nome"); ?

se eu a retirar o programa funciona da mesma forma...

quanto a trocar o Buffered pelo Scanner... penso q tem q ficar algo deste género:

import java.util.*;
import java.io.*;

public class Teste{

private static String nome;


public static void main (String []args){

	System.out.print("Escreva o seu nome: ");
	Scanner in = new Scanner (System.in);

	try{
		nome = in.nextLine();
	}catch (IOException ioe){
		System.exit(1);
	}

	System.out.println("\n"+"O seu nome e: " + nome);
}
}

mais uma vez... um erro :\

o erro é:  exception java.IOException is never thrown in body of corresponding try statement

                  }catch (IOException ioe){

a seta q aponta para o erro esta por baixo da palavra "catch"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

DONE!

ja sei como fazer isto com o Scanner... sem precisar de declarar Exceptions..

fica assim:

import java.util.*;

public class Teste4{


public static void main (String []args){

	System.out.print("Escreva o seu nome: ");
	Scanner in = new Scanner (System.in);

	String nome=in.nextLine();

	System.out.println("O seu nome e: " + nome);
}
}

e pronto.. funciona perfeitamente em meia duzia de linhas de codigo lol...

brigado por tudo pessoal!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com o Scanner não precisas do try catch porque o Scanner não lança exceptions.

Quanto linha System.out.println("IO erro tentando ler o nome"); serve apenas para imprimir essa mensagem quando é lançada uma exception.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com o Scanner não precisas do try catch porque o Scanner não lança exceptions.

Quanto linha System.out.println("IO erro tentando ler o nome"); serve apenas para imprimir essa mensagem quando é lançada uma exception.

São esse tipo de coisas que me baralham no java...

"void" "main" "static" "exceptions" q raio é isto? sinceramente isto para mim é chinês :\

dai eu baralhar me tanto com coisas tao simples...

desculpem tanta ignorancia.. tentem compreender q so agora me meti em java e programação a objectos :S

obrigado pela ajuda e acima de tudo pela paciencia :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"void" "main" "static" "exceptions" q raio é isto? sinceramente isto para mim é chinês :\

dai eu baralhar me tanto com coisas tao simples...

Se estas coisas te confundem devias parar, respirar fundo e voltar ao início, que é onde estas coisas deviam ter sido aprendidas :thumbsup:

Outra coisa, eu sei que no erro aparece lá uma setinha mas seria mais produtivo leres a mensagem de erro, a setinha aparece onde o compilador encontrou uma coisa que não esperava, a mensagem diz o que é o compilador encontrou ou esperava encontrar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se estas coisas te confundem devias parar, respirar fundo e voltar ao início, que é onde estas coisas deviam ter sido aprendidas :(

Outra coisa, eu sei que no erro aparece lá uma setinha mas seria mais produtivo leres a mensagem de erro, a setinha aparece onde o compilador encontrou uma coisa que não esperava, a mensagem diz o que é o compilador encontrou ou esperava encontrar.

é exactamente isso q estou a pensar fazer... voltar ao inicio e acabar com  estas pequenas duvidas..

quanto aos erros eu sei como isso funciona.. mas como ainda nao compreendo muito bem os try's e os catch's perguntei..

Dúvida resolvida!

obrigado pela ajuda! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora