Erro!

tenho a seguinte instrução:

int dc=0;

for (int contador = 1; contador<=algarismo; contador++){
if ((contador % 2) != 0 ){
dc += this.somaDois(Integer.toString(Integer.valueOf (numero.substring(contador)).intValue()*2));
}
else{
dc += Integer.valueOf(numero.substring(contador)).intValue();
}
}

valor do algarismo = 12
string numero = “182123925143”

logo na primeira interação acontece o seguinte erro:

java.lang.NumberFormatException: 83123925143
at java.lang.Integer.parseInt(Integer.java:462)
at java.lang.Integer.valueOf(Integer.java:553)
at br.com.RegistroMobile.RegistroMobile.geraDC(RegistroMobile.java:86)
at br.com.RegistroMobile.RegistroMobile.gerarContraSenha(RegistroMobile.java:106)
at br.com.RegistroMobile.RegistroMobile.commandAction(RegistroMobile.java:62)
at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(Display.java:1992)
at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(Display.java:2822)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(DefaultEventHandler.java:303)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(AutomatedEventHandler.java:670)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(DefaultEventHandler.java:658)

obrigado pela ajuda

O valor 83123925143 é muito grande para uma variável int, você precisa usar long, use Long.valueOf() no lugar de Integer.valueOf()