Pegar os quatro ultimos dígitos de um código

Estou com uma dúvida. Como faço para pegar os ultimos 4 numeros de um determinado código de 18 dígitos?
Algúem poderia me dar algum exemplo básico?

Valeu.

cara acho q usando o metodo substring funciona

ex…

codigo.substring(15,18);

o primeiro parametro é de onde ele vai começar a ler a string e o segundo ate onde ele vai ler…portanto como vc quer os 4 ultimos de 18 digitos, vai ler do 15 ao 18…

acho q eh isso…se tiver errado me corrijam…
qualquer coisa posta ai

abraços

	String digitos = "1234567453535";
	String ultimos = digitos.substring(digitos.length()-4);
	System.out.println(ultimos);
String s = "123456789012345678";
String t = s.substring (s.length() - 4);

Aí, fera…
Só uma opinião pra te ajudar a escolher como vai fazer…
Com certeza as soluções referidas aqui são das mais simples e eficientes para a tarefa… Mas, apesar de todas se referirem à utilização de “substring” a primeira, do Luan se diferencia das duas últimas (que são identicas) na funcionalidade…
Tipo, se for possível que exista numa mesma coluna codigos com 16, 17 ou 18 números e você quiser pegar os 4 últimos absolutos você deverá usar a última opção, subtraindo os quatro do índice de caracteres, porém se quiser extrair 4 de qualquer posição, use a primeira opção que lhe permite isso, ressaltando que obterá erros se tentar retirar um intervalo que não exista, tipo tirar as strings da posição 15 até a 18 se a 18 não existir, por exemplo…
Só pra especificar melhor…
Um abraço!

Se você trabalhar sempre com dígitos (números) então poderá usar o operador de módulo (%).

public static void main(String[] args) { System.out.println("" + 111111111111112345L % 10000); }

Resposta:

2345

Mas com 18 dígitos é necessário usar long porque int não aguenta.

Não necessariamente! Assim fica menos flexível…
Você pode converter o número (em caso de ser numérico) para String e depois devolver a String com o substring…
Sem dúvidas é uma prática melhor do que o operador de módulo…

Mais uma prova da inviabilidade para algo tão simples, e principalmente, que exige rapidêz…

Com certeza, todas as formas são válidas, mas precisam ser concisas e flexiveis…

Um abraço!

Valeu a ajuda gente. Na verdade meu problema é validar um código com 18 dígitos, sendo que, os 4 ultimos não poderão ser iguais a “0100”. Essa é a regra que me passaram.

Obrigado, espero que em alguns desses casos funcione.

Aí, fera, então substring nele!!!
Hehehehhe…
Daí é só comparar se a string (composta por 4 dígitos) é igual ou não a “0100”…
Vai dar certinho…

Não necessariamente! Assim fica menos flexível…
Você pode converter o número (em caso de ser numérico) para String e depois devolver a String com o substring…
Sem dúvidas é uma prática melhor do que o operador de módulo…[/quote]

Ué, eu duvido… rs
Por que converter para String e trabalhar com substring() se eu sei que sempre serão inteiros e posso trabalhar com módulo ??
Operações, digamos, nativas, como MÓDULO, são mais rápidas que operações com String, não??

[]s

A questão é a flexibilidade…
Pra quê bitolar num módulo?
Quais as expressivas vantagens???

Bom, eu não vejo muita “flexibilidade” pra esse caso de uso, nem como trabalhar com String ajudaria…
O código do arthurgon aparentemente sempre será numérico. O que acredito que pode mudar é a regra de validação, não a obtenção dos valores…

Trabalhar com substring ajudaria, talvez, para obter os dígitos centrais. Digamos, da posição 10 a 13, sei lá.
(Mesmo assim, um cálculo rápido com “%” resolveria…)
O que me incomoda é ter que transformar os valores em String, obter os dígitos específicos e reconverte-los a int pra depois validá-los, persiti-los, etc…
Ainda tratar todas as Exceptions lançadas por esses conversores, encher os código com try…catch s ou ifs…
Fora que pra mim não faz muito sentido converter um tipo de dado para outro apenas para validá-lo.

Bom, mas aí é opção de cada um… :wink:

[]s

[quote=Linkel]A questão é a flexibilidade…
Pra quê bitolar num módulo?
Quais as expressivas vantagens???[/quote]

Ah, e num acha que seria “bitolar”. Apenas um bom exercício de algoritmo!

[]s

É verdade, brother uchoaaa… É uma opção de cada um e não posso realmente dizer que não é aplicável… Cada um faz do jeito que se sentir mais confortável e do jeito que se sentir mais flexivel… Se formos bater cabeça nunca será terminado esse post, rsrsrsrsrsr… E, como você disse, depende do caso de uso… Por isso me apaixonei por Java, porque se destaca em tantas opções…
Um abraço!

[quote=arthurgon]
Pessoal, estou com um problema parecido com esse. Meu problema é eu tenho um número ID: 100000101000201001102000302000300000708000700000 eu consigo pegalo e gravar no banco com o substring, porem esse ID pode vir maior ou menor.É possível pegar esse campo? Só mais uma coisa, faço tudo isso em um arquivo txt e gravo no banco.

Obrigado.

Valeu.[/quote]