Duvidas em entrada de dados

Oi pessoal, estou fazendo um exercicio e estou com 2 dúvidas:

A primeira ele pede pra digitar um ano ‘xxxx’ (no caso é o ano q a pessoa fez o cadastro…mas isso n vem ao caso), eu logo pensei em simplesmente usar int (pra ler somente numeros inteiros)
mas ai não teria limite de caracteres né…imaginem a pessoa digita no ano 21253 (futuro beeeem distante hahahaha…brincadeira).

minha outra dúvida é a seguinte, pede-se também a entrada de um dado que tenha 5 caracteres alfanumericos (nesse caso eu até pensei em usar string, mas como se faz pra ele ler 5 catacteres? e como fica a leitura no Scanner?)

agradeço desde já.
vlw galera

[quote=zenk]Oi pessoal, estou fazendo um exercicio e estou com 2 dúvidas:

A primeira ele pede pra digitar um ano ‘xxxx’ (no caso é o ano q a pessoa fez o cadastro…mas isso n vem ao caso), eu logo pensei em simplesmente usar int (pra ler somente numeros inteiros)
mas ai não teria limite de caracteres né…imaginem a pessoa digita no ano 21253 (futuro beeeem distante hahahaha…brincadeira).

minha outra dúvida é a seguinte, pede-se também a entrada de um dado que tenha 5 caracteres alfanumericos (nesse caso eu até pensei em usar string, mas como se faz pra ele ler 5 catacteres? e como fica a leitura no Scanner?)

agradeço desde já.
vlw galera[/quote]

Armazene o ano em uma string mesmo. Em modo texto você não tem poder pra limitar a quantidade de caracteres. Sugiro que leia a entrada e depois valide (expressões regulares, SimpleDateFormat, e etc.),

[]'s

Armazene o ano em uma string mesmo. Em modo texto você não tem poder pra limitar a quantidade de caracteres. Sugiro que leia a entrada e depois valide (expressões regulares, SimpleDateFormat, e etc.),

[]'s[/quote]

Boa Noite André, obrigado pela atenção =)

Veja bem, se eu colocar o ano em uma String (será possível a pessoa digitar letras também…)

da um olhada sobre mascara, isso é muito usado para fazer validação de cpf, cnpj. isso faz com que valor digitado sempre seja de acordo com a maskara.

Por exemplo: quando o usuário vai digitando ja vai aparecendo os “/” automaticamente.

att

[quote=zenk]Armazene o ano em uma string mesmo. Em modo texto você não tem poder pra limitar a quantidade de caracteres. Sugiro que leia a entrada e depois valide (expressões regulares, SimpleDateFormat, e etc.),

[]'s[/quote]

Boa Noite André, obrigado pela atenção =)

Veja bem, se eu colocar o ano em uma String (será possível a pessoa digitar letras também…)[/quote]

Sim. Mas você pode remover as letras da string. Mas, de toda forma, valide a string, como eu havia sugerido.

como eu faço pra remover letras da string.
Como assim validar string.

nao entendi =/

[quote=zenk]como eu faço pra remover letras da string.
Como assim validar string.

nao entendi =/[/quote]

Há várias formas de se faze-lo. Você pode substituir caracteres através do método replaceAll(), pode converter a string em um vetor, e comparar elemento por elemento e pode utilizar expressões regulares i[/i].

[]'s

[quote] Oi Zenk, não sei se entendi o que você realmente está procurando.
Mas vou colocar de um forma bem simples um código que talvez possa esclarecer suas duvidas. [/quote]

import java.util.Scanner;

public class TestDriveDado {
	
	public static void main(String[] args) {
		
		String dado;
		
		Scanner sc = new Scanner(System.in);
		
		do {
			System.out.println("Digite um dado com até 5 caracteres: ");
			dado = sc.nextLine();
			
			if(dado.length() > 5){
				System.out.println("OPSs!! Informe um dado válido");
			}
		} while (dado.length() > 5);
		
	}
}

Galera, estive fora uns dias pois estava doente, por isso não continuei perguntando rsrs (brincadeira).

import java.util.Scanner;

public class TestDriveDado {
	
	public static void main(String[] args) {
		
		String dado;
		
		Scanner sc = new Scanner(System.in);
		
		do {
			System.out.println("Digite um dado com até 5 caracteres: ");
			dado = sc.nextLine();
			
			if(dado.length() > 5){
				System.out.println("OPSs!! Informe um dado válido");
			}
		} while (dado.length() > 5);
		
	}
}

[/quote]

Nossa, MUUUITO obrigado a todos, de verdade.
É tão simples que assusta :open_mouth:
Só faltava essa solução, quanto ao ano, eu resolvi da seguinte forma:

if (ano < 1860 || ano > 2011)
System.out.println ("Ano invalido");

dessa forma até que funciona (coloquei 1860 porque eu imagino que não exista ninguem com 151 anos rsrsrs, e tbm não existem homens do futuro pra por nascimento depois de 2011).
porém, dessa forma eu teria que todo ano alterar o 2011 para 2012 dpeois 2013, etc.

Fora dos pedidos de meu trabalho, e dentro de minha curiosidade eu os pergunto (rsrs)
Existe alguma solução para isso?
Eu criando um pedido para a pessoa colocar a data de nascimento, há possibilidades de automaticamente calcular a idade?

Desde já agradeço a atenção de todos.