Hola,
Cita:
Iniciado por AGmzT Hola gente! escribi este código y quisiera saber como simplificarlo muchas gracias!! ...
Posiblemente podrías obtener exactamente el mismo resultado pero con un código mas simplificado de esta forma:
Código Java:
Ver originalint i = desctos.length - 1;
while (i >= 0 && desctos[i] == 0.0f) {
i--;
}
costoDesc = costo;
while (i >= 0) {
costoDesc *= desctos[i--];
}
return costoDesc;
La pregunta ahora sería ... ¿estás seguro que eso es lo que quieres obtener?
Evidentemente hay problemas que se notan a simple vista, como el hecho que si dos valores dentro del vector 'desctos' son iguales a 0 entonces el resultado siempre va a ser 0.
Adicionalmente que si los valores son, por ejemplo, 50 tendrías (50^10), 50 elevado a la potencia 10 es un número muy grande. Evidentemente no son porcentajes.
Cita:
Iniciado por Profesor_Falken
Código:
int numDescs = desctos.length;
if (numDescs == 0) {
costoDesc = costo;
else {
for (int i = numDescs; i>=0; i--) {
costoDesc *= desctos[i-1];
}
costoDesc *= costo;
}
Hay un error de lógica con un ArrayOutOfBounds Exception. Si cualquier valor es 0 el resultado siempre va a ser 0, en su caso solo multiplica los valores iniciando desde el primero que sea diferente a 0 descendentemente; eso para realizar exactamente la misma funcionalidad del código inicial, que estoy casi seguro que no realiza la funcionalidad que le solicitaron.
Igual el problema ha de ser otro,
Saludos,