2012-01-24 14 views
9

Dla mojego projektu, muszę zrobić program, który pobiera 10 liczb jako dane wejściowe i wyświetla tryb tych liczb. Program powinien wykorzystywać dwie tablice i metodę, która pobiera tablicę liczb jako parametr i zwraca wartość maksymalną w tablicy.Jak mogę zlokalizować i wydrukować indeks maksymalnej wartości w tablicy?

Zasadniczo to, co zrobiłem do tej pory, to druga tablica do śledzenia liczby wyświetleń numeru. Patrząc na początkową tablicę, zobaczysz, że tryb wynosi 4. (Numer, który pojawia się najbardziej). W drugiej tablicy indeks 4 będzie mieć wartość 2, a zatem 2 będzie maksymalną wartością w drugiej macierzy. Muszę zlokalizować tę maksymalną wartość w mojej drugiej tablicy i wydrukować indeks. Moje wyniki powinny wynosić "4".

Mój program jest dobry, dopóki nie spróbuję wyprodukować "4", a próbowałem kilku różnych rzeczy, ale wydaje mi się, że nie działa prawidłowo.

Dziękuję za poświęcony czas!

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); 

} 
} 

Odpowiedz

8

Twoim błędem jest porównywanie if ((newnumber > modetracker[i-1]). Powinieneś sprawdzić, czy newnumber jest większy niż już znaleziony maks. To jest if ((newnumber > modetracker[maxIndex])

powinna zmienić swoje ostatnie wiersze:

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

Przez zadanie domowe oznaczone pytanie jest bardziej stosowne wskazać na to, co jest złe z pracą Op, a następnie dostarczając dosłownego rozwiązania –

+0

Tak, edytowałem to. – isah

+0

ok, dziękuję- podążam za kodem i rozumiem to. Dzięki! – pearbear

1

Można zmienić ostatnią część do:

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