2012-01-24 33 views
9

Para mi proyecto, necesito hacer un programa que tome 10 números como entrada y muestre el modo de estos números. El programa debe usar dos matrices y un método que toma una matriz de números como parámetro y devuelve el valor máximo en la matriz.¿Cómo puedo localizar e imprimir el índice de un valor máximo en una matriz?

Básicamente, lo que he hecho hasta ahora se utiliza una segunda matriz para realizar un seguimiento de cuántas veces aparece un número. Al observar la matriz inicial, verá que el modo es 4. (Número que aparece más). En el segundo conjunto, el índice 4 tendrá un valor de 2 y, por lo tanto, 2 será el valor máximo en el segundo conjunto. Necesito ubicar este valor máximo en mi segunda matriz e imprimir el índice. Mi salida debe ser '4'.

Mi programa es bueno hasta que intento producir el '4', y he intentado algunas cosas diferentes, pero parece que no puedo hacer que funcione correctamente.

¡Gracias por su tiempo!

public class arrayProject { 

public static void main(String[] args) { 
    int[] arraytwo = {0, 1, 2, 3, 4, 4, 6, 7, 8, 9}; 
    projecttwo(arraytwo); 
} 


public static void projecttwo(int[]array){ 
    /*Program that takes 10 numbers as input and displays the mode of these numbers. Program should use parallel 
    arrays and a method that takes array of numbers as parameter and returns max value in array*/ 
    int modetracker[] = new int[10]; 
    int max = 0; int number = 0; 
    for (int i = 0; i < array.length; i++){ 
     modetracker[array[i]] += 1;  //Add one to each index of modetracker where the element of array[i] appears. 
    } 

    int index = 0; 
    for (int i = 1; i < modetracker.length; i++){ 
     int newnumber = modetracker[i]; 
     if ((newnumber > modetracker[i-1]) == true){ 
      index = i; 
     } 
    } System.out.println(+index); 

} 
} 

Respuesta

8

Su error es en la comparación de if ((newnumber > modetracker[i-1]). Debería verificar si el newnumber es más grande que el máximo encontrado. Es decir if ((newnumber > modetracker[maxIndex])

debe cambiar sus últimas filas a:

int maxIndex = 0; 
    for (int i = 1; i < modetracker.length; i++) { 
     int newnumber = modetracker[i]; 
     if ((newnumber > modetracker[maxIndex])) { 
      maxIndex = i; 
     } 
    } 
    System.out.println(maxIndex); 
+0

Para una tarea etiquetada pregunta es más apropiado para señalar lo que está mal con el trabajo de Op en lugar de proporcionar una solución textual –

+0

Sí, la he editado. – isah

+0

bien, gracias, sigo el código y lo entiendo. ¡Gracias! – pearbear

1

Usted podría cambiar última parte de:

int maxIndex = 0; 
for (int i = 0; i < modetracker.length; i++) { 
    if (modetracker[i] > max) { 
     max = modetracker[i]; 
     maxIndex = i; 
    } 
} 
System.out.println(maxIndex); 
Cuestiones relacionadas