2012-01-24 17 views
9

मेरी प्रोजेक्ट के लिए, मुझे एक ऐसा प्रोग्राम बनाना होगा जो इनपुट के रूप में 10 नंबर लेता है और इन नंबरों के मोड को प्रदर्शित करता है। कार्यक्रम को दो सरणी और एक विधि का उपयोग करना चाहिए जो पैरामीटर के रूप में संख्याओं की सरणी लेता है और सरणी में अधिकतम मान देता है।मैं सरणी में अधिकतम मान के सूचकांक को कैसे ढूंढ और मुद्रित कर सकता हूं?

असल में, जो मैंने अभी तक किया है, उसे ट्रैक करने के लिए एक दूसरी सरणी का उपयोग किया जाता है ताकि संख्या कितनी बार दिखाई दे। प्रारंभिक सरणी को देखते हुए, आप देखेंगे कि मोड 4 है। (संख्या जो सबसे अधिक दिखाई देती है)। दूसरी सरणी में, इंडेक्स 4 का मान 2 होगा, और इस प्रकार 2 दूसरी सरणी में अधिकतम मान होगा। मुझे अपने दूसरे सरणी में इस अधिकतम मान का पता लगाने की जरूरत है, और सूचकांक मुद्रित करें। मेरा आउटपुट '4' होना चाहिए।

मेरा प्रोग्राम तब तक अच्छा है जब तक कि मैं '4' उत्पन्न करने का प्रयास नहीं करता, और मैंने कुछ अलग-अलग चीजों की कोशिश की है लेकिन इसे ठीक से काम करने के लिए प्रतीत नहीं होता है।

आपके समय के लिए धन्यवाद!

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

} 
} 

उत्तर

8

आपकी गलती if ((newnumber > modetracker[i-1]) की तुलना में है। आपको जांचना चाहिए कि newnumber बड़ा है तो पहले से ही अधिकतम मिला है।

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

एक होमवर्क में चिह्नित के लिए सवाल यह है कि क्या गलत है पर बात करने के लिए अधिक उपयुक्त है कि if ((newnumber > modetracker[maxIndex])

आप करने के लिए अपने आखिरी पंक्तियों बदलना चाहिए है ओप के काम के साथ-साथ एक क्रियात्मक समाधान प्रदान करना –

+0

हाँ इसे संपादित किया। – isah

+0

ठीक है, धन्यवाद- मैं कोड का पालन करता हूं और इसे समझता हूं। धन्यवाद! – pearbear

1

आप को अंतिम भाग को बदल सकता है:

int maxIndex = 0; 
for (int i = 0; i < modetracker.length; i++) { 
    if (modetracker[i] > max) { 
     max = modetracker[i]; 
     maxIndex = i; 
    } 
} 
System.out.println(maxIndex); 
संबंधित मुद्दे

 संबंधित मुद्दे