El problema es evidente y es que no estás realizando correctamente el desplazamiento de los elementos.
Si lo que quieres es mover cada posición del array a la anterior, no vale con:
Código Java:
Ver originalpublic static void moveTrans(int[] trans) {
for (int i = 0; i < trans.length - 1; i++) {
trans[3] = trans[i + 1]; <=== trans[3] el ultimo lugar del arreglo
}
}
Si te fijas, te darás cuenta de que lo único que estás haciendo es copiar el elemento 0 del array a la última posición, luego el elemento 1 a la última posición de nuevo y así hasta la última iteración en la que copias la última posición en sí misma.
No estás moviendo los elementos a la izquierda para dejar espacio a un elemento.
Creo además que deberías cambiar la forma en la que resuelves la inserción de un elemento cuando no cabe porque no está bien.
Código Java:
Ver originalpublic static void makeTransactions(int amount, int[] trans) {
int position = findNr(trans);
if (position == -1) {
moveTrans(trans);
} else {
trans[position] = amount;
}
}
Cuando el método findNr devuelve -1, llamas a moveTrans, pero luego no le asignas el valor de amount en la última posición.
Lo correcto (o, por lo menos funciona):
Código Java:
Ver originalpublic static void makeTransactions(int amount, int[] trans) {
int position = findNr(trans);
if (position == -1) {
moveTrans(trans);
position = trans.length -1
}
trans[position] = amount;
}
Y, por supuesto, arreglar el método moveTrans.