Java - Ayudadme con este algoritmo por favor

   
Vista:

Ayudadme con este algoritmo por favor

Publicado por dev3rt (7 intervenciones) el 08/04/2016 22:10:45
Rotación de un array
Hacer un algoritmo que llene un array a de 10 posiciones con números enteros aleatorios entre 0 y 9 y luego haga una rotación del vector una posición hacia la izquierda.
Captura-de-pantalla-2016-04-08-a-las-22.01.54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//Lo he echo en pseudocodigo pero en java no me sale me podéis ayudar
algoritmo RotacionA
const
MAX: natural = 10
fconst
var
i, primero: natural
a: tabla[MAX] de natural
fvar
//Inicializar el array con valores aleatorios
por i:=1 hasta MAX hacer
a[i]:= aleatori(9) + 1 // valores entre 1 y 9
fpor
primero:= a1] // guardar el valor a la primera posición
por i:=1 hasta MAX – 1 hacer
// por cada posición menos la última poner el que tiene a la derecha
a[i]:= a[i+1]
fpor
// el valor que habia a la primera posición pasa a la última posición
v[MAX]:= primero
falgoritmo
-------
import java.util.Random;
public class RotacionA {
 
   public static final int MAX = 10;
 
    public static void main(String[] args) {
     Random aleatorio = new Random();
     int primero,i;
     int [] a = new int[MAX];
 
       for( i=0;i<=MAX;i++){
       a[i]=(int) aleatorio.nextInt(9)+1;
 
 
    }
      primero = a[1];
       for(i=1; i <=MAX-1;i++){
           a[i]=a[i+1];
 
       }
    a[MAX]=primero;
     System.out.println(a[i]);
pero no entiendo los exactamente porque falla el codigo en java,me podéis explicar los for,
}
}
Gracias y un saludo,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayudadme con este algoritmo por favor

Publicado por Thanatos (69 intervenciones) el 09/04/2016 07:32:05
Los índices de un array de diez elementos, empiezan en cero y terminan en nueve (MAX - 1). Al usar una sentencia como esta:

1
for (i = 0; i <= MAX; i++)

En algún momento "i" llegará a ser igual al valor de MAX, osea igual a 10. Eso ocasionará un error, porque no existe esa posición en el array. Lo mismo sucede con esta línea:

1
a[MAX] = primero;


Prueba este código y revisa el uso de los índices para aclarar tus dudas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.Random;
 
public class RotacionA {
    public static final int MAX = 10;
 
    public static void main(String[] args) {
        Random aleatorio = new Random();
        int[] a = new int[MAX];
 
        for (int i = 0; i < MAX; ++i) {
            a[i] = aleatorio.nextInt(10);
        }
        mostrarArray(a);
 
        int primero = a[0];
        for (int i = 0; i < MAX - 1; ++i) {
            a[i] = a[i + 1];
        }
        a[MAX - 1] = primero;
 
        System.out.println();
        mostrarArray(a);
    }
 
    private static void mostrarArray(int[] array) {
        for (int elemento : array) {
            System.out.print(elemento + "  ");
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar