2012-11-26 70 views
0

LeastFrequent - 輸出其中至少頻繁地發生與它發生沿着整數從System.in 10輸入整數列表計數。如果列表中多個整數的頻率最低,請輸出任何頻率最低的整數。將您的班級命名爲LeastFrequent。您可以假設所有10個整數都在-100到100的範圍內。計數的至少10個用戶輸入整數的數組發生

import java.util.*; 

public class LeastFrequent 
{ 
public static void main(String[] args) 
{ 
    Scanner scan = new Scanner(System.in); 

    int[] arr = new int[10]; 
    int[] hold = new int[300]; 

    int x = 0; 
    int count = 0; 
    int a = 1; 
    int least = 0; 

    System.out.print("numbers: "); 
    //adds 10 numbers to an array and counts occurrence 
    for(int i=0;i<arr.length;i++) 
    { 
     arr[i] = scan.nextInt(); 
     hold[arr[i]]++; 
    } 

    for(int i=0;i<hold.length;i++) 
    { 
     if(hold[i] > 0) 
     { 

     } 
    } 


    System.out.println("least frequent: " + count + " occurs " + arr[count] + " times"); 
} 
} 

我要求用戶輸入10個整數並將其放入數組中。 我也有計算輸入數字的出現並將其存儲在另一個數組中。 我被困在尋找最不常見的人之一。 我知道我需要再次掃描第二個數組,我不知道如何。 有關如何比較第二個數組的元素值而忽略等於0的值的任何想法?

+0

循環,TMP值和如果statmen(或兩個) – elyashiv

+0

@VulcaBlack你解決問題了嗎? – dreamcrash

回答

3

首先,以下是不完全正確的:

hold[arr[i]]++ 

會發生什麼,如果我輸入-1

至於找到至少發生元素,你需要找到在hold這是大於零的最小值。在迭代hold時,您可以跟蹤迄今爲止看到的最小的此類值以及其索引。

最後,另一種方法的問題是,以對數組進行排序。一旦你這樣做,相等的值就會彼此相鄰。這簡化了重複計數。

+0

我想讓它這樣輸入的數值變爲指數+ 100所以它很好地組織的,但「按住[改編[I] + 100] ++」不工作正常。 – VulcaBlack

0

你只需要找到最小:

int min = hold[0]; // Mark the first position as min 
int pos = 0; 
for(int i=1;i<hold.length;i++) 
    { 
     if(hold[i] < min) // if the current position have less frequency 
     {  
     min = hold[i]; // save is frequency 
     pos = i;  // and is position 
     } 
    } 
相關問題