Olá pessoal estou desenvolvendo um sistema de gestão para uma empresa tecnológica. Para além da venda de produtos Tecnológicos a empresa também tem dado formações, logo há necessidade de cadastrar os alunos no sistema.
A ideia é criar um número de estudante de forma automática e aqui está a minha dificuldade para criar-lo. Este código ela tem que capturar os dois últimos dígitos do ano corrente e uma sequência de 4 números que vai sendo incrementado.
Como vc precisa que o número vá incrementando em sequencia, vc poderia usar algo assim:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
private static Integer contador = 1;
public static void main(String[] args) {
System.out.println(numeroDeEstudante());
System.out.println(numeroDeEstudanteComoLong());
}
static String numeroDeEstudante() {
String ano = LocalDate.now().format(DateTimeFormatter.ofPattern("yy"));
return String.format("%s%04d", ano, contador++);
}
static long numeroDeEstudanteComoLong() {
String ano = LocalDate.now().format(DateTimeFormatter.ofPattern("yy"));
return Long.parseLong(String.format("%s%04d", ano, contador++));
}
}
O especificador “%04d” se encarrega de completar com zeros quando o número tiver menos de 4 digitos, então se o contador for um, ele vai retornar 200001, e se for algo como 1345, seria 201345.
Fiz uma versão que retorna String e outra long, mas acho mais seguro retornar uma String.
O método Long.parseLong() converte uma String em um primitivo long, se precisar de um Long, pode usar o Long.valueOf(). Criar um Long usando um contructor (ex.: new Long("123")) está obsoleto desde o Java 9.