2012-01-24 33 views
9

Đối với dự án của tôi, tôi cần tạo một chương trình có 10 số làm đầu vào và hiển thị chế độ của các số này. Chương trình nên sử dụng hai mảng và một phương thức lấy mảng các số làm tham số và trả về giá trị lớn nhất trong mảng.Làm cách nào để xác định và in chỉ mục của giá trị tối đa trong một mảng?

Về cơ bản, những gì tôi đã làm cho đến nay được sử dụng một mảng thứ hai để theo dõi số lần một số xuất hiện. Nhìn vào mảng ban đầu, bạn sẽ thấy rằng chế độ là 4. (Số xuất hiện nhiều nhất). Trong mảng thứ hai, chỉ mục 4 sẽ có giá trị là 2, và do đó 2 sẽ là giá trị lớn nhất trong mảng thứ hai. Tôi cần phải xác định giá trị tối đa này trong mảng thứ hai của tôi và in chỉ mục. Đầu ra của tôi phải là '4'.

Chương trình của tôi tốt cho đến khi tôi cố gắng tạo ra '4' và tôi đã thử một vài thứ khác nhau nhưng dường như không làm cho nó hoạt động bình thường.

Cảm ơn bạn đã dành thời gian!

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

} 
} 

Trả lời

8

Lỗi của bạn là so sánh if ((newnumber > modetracker[i-1]). Bạn nên kiểm tra xem số newnumber có lớn hơn số tối đa đã tìm thấy hay không. Đó là if ((newnumber > modetracker[maxIndex])

Bạn nên thay đổi dòng cuối cùng của bạn để:

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

Đối với một bài tập về nhà tagged câu hỏi đó là thích hợp hơn để trỏ vào những gì là sai với công việc của Op thay vì sau đó cung cấp một giải pháp đúng nguyên văn –

+0

Vâng đã chỉnh sửa nó. – isah

+0

okay, cảm ơn bạn- Tôi làm theo mã và hiểu nó. Cảm ơn! – pearbear

1

Bạn có thể thay đổi phần cuối cùng để:

int maxIndex = 0; 
for (int i = 0; i < modetracker.length; i++) { 
    if (modetracker[i] > max) { 
     max = modetracker[i]; 
     maxIndex = i; 
    } 
} 
System.out.println(maxIndex); 
Các vấn đề liên quan