Cara, um dos conceitos de String é que elas são imutáveis - não mudam NUNCA. Você não altera strings, você só cria novas. Assim você pode perder uma boa memória com isso.
Você pode usar Stringbuilder ou StringBuffer(nao recomendado, pois é safe threaded e assim um pouco mais lenta).
Dá uma lida em StringBuilder. Tem várias coisas na net.
Fera, deixa eu ver se entendi…
Você quer validar esses ‘números’ que já estão numa variável String e precisa fazer um cálculo com eles antes de concatenar o valor String ‘LOTE’ no início desse número, certo?
Bom, se for isso, então você vai converter essa String para inteiro, fazer o cálculo para o dígito verificador que queira, pegar o resultado e retornar para a String concatenando o que quiser nela…
String numeroString = "00800898909090";
int numeroInteiro = Integer.valueOf(numeroString);
// realiza os cálculos que quiser...
(...)
// retorna o valor calculado para a String, caso precise disso...
numeroString = String.valueOf(numeroInteiro);
// e então pode concatenar o que quiser na String...
numeroString = "LOTE"+numeroString;
// ou pode fazer isso diretamente com o resultado inteiro...
numeroString = "LOTE"+String.valueOf(numeroInteiro);
Lembrando que se quiser retirar ou colocar qualquer dígito que esteja em qualquer posição na variável String pode-se usar o método subString()…
// copiando só o primeiro "9" da String...
String verificador = numeroString.subString(6); // onde '6' é o índice da posição do número 9 na String...
// copiando só o trecho "9890" da String...
String verificador = numeroString.subString(6,9); // onde '6' é a posição inicial e '9' é a posição final da porção que será retirada
Se não for nada disso, então explica melhor aqui o que precisa fazer…
Um abraço!