Hola,
Lo que tratas de hacer, se conoce comunmente como
"Bucle controlado por centinela", donde el valor centinela en tu caso es
-1. El error de tu código es provocado porque al ingresar el valor centinela (-1 o cualquier valor negativo) el split genera un vector de cadenas donde el primer índice contiene el signo menos ("-") el cual al tratar de ser convertido a entero lanzará un
NumberFormatException.
Hay 2 soluciones:
La primera, la clásica doble lectura, una antes de entrar al bucle y la otra al final de bucle:
Código Java:
Ver originalimport java.io.BufferedReader;
import java.io.InputStreamReader;
public class Sumadedigitos {
NumerosSuma = entrada.readLine();
while (!NumerosSuma.equals("-1")) {
String numeros
[] = NumerosSuma.
split("");
int suma = 0;
for (int i=0; i<numeros.length; i++){
int numint
= Integer.
parseInt(numeros
[i
]); suma = suma + numint;
System.
out.
printf(""+numint
+" "); if (i != numeros.length-1) {
}
}
System.
out.
printf("= "+suma
+"");
NumerosSuma = entrada.readLine();
}
System.
out.
println("\nFin del programa"); }
}
Y la otra, colocar un mecanismo de salida al detectar la entrada del valor centinela:
Código Java:
Ver originalimport java.io.BufferedReader;
import java.io.InputStreamReader;
public class Sumadedigitos {
while (!NumerosSuma.equals("-1")) {
NumerosSuma = entrada.readLine();
if (NumerosSuma.equalsIgnoreCase("-1")) break;
String numeros
[] = NumerosSuma.
split("");
int suma = 0;
for (int i=0; i<numeros.length; i++){
int numint
= Integer.
parseInt(numeros
[i
]); suma = suma + numint;
System.
out.
printf(""+numint
+" "); if (i != numeros.length-1) {
}
}
System.
out.
printf("= "+suma
+""); }
System.
out.
println("\nFin del programa"); }
}
Saludos.