2014-09-25 41 views
0

我有一個文件,其中是名單,性別和有多少人有這個名字的計數列表。如何從文件中獲取前4個整數。

實施例:

閣樓,M 416

薩拉,F,800

伯納德,M 413

傑西卡,F,1300

巴里,M 408

Derick,M,407

米切爾,男,407

拿但業,男,404

我試圖獲得前4名有名字的最高數,但我無法這樣做。我已經嘗試過,但它似乎並沒有工作。我越來越找不到符號錯誤。另外我想知道是否有更高效的方法來完成這個功能,因爲如果我必須找到更大文件的前10位,那麼我做這件事的方式可能會變得很長。

while(sc.hasNextLine()) 
    { 

    // read a line from the input file via sc into line 
     line = sc.nextLine(); 



     StringTokenizer stk = new StringTokenizer(line, ","); 
     String name = stk.nextToken(); 
     char sex = stk.nextToken().charAt(0); 
     int count = Integer.parseInt(stk.nextToken()); 


     OneName list = new OneName(name, sex, count); 

     oneName.add(list);  


    } 

    String many= oneName.get(0).toString(); 
    int a = oneName.get(0).getCount(); 
    for (int i = 0; i< oneName.size(); i++) 
    { 

     int b = oneName.get(i).getCount(); 
     int c = oneName.get(i).getCount(); 
     int d = oneName.get(i).getCount(); 
     String man= oneName.get(i).toString(); 
     if (a < b) 
     { 
      a = b; 
      b = a ; 

     } 
     if (b < c) 
     { 
      b = c; 
      c = b; 
     } 
     if (c < d) 
     { 
      c = d; 
      d = c; 

     } 

    } 

    System.out.println(a+b+c+d); 
    } 
+0

請給我們提供錯誤跟蹤。爲「更容易」我建議你使用集合與比較lambda排序。 – user2504380 2014-09-25 10:24:59

+0

*找不到符號錯誤*測量您正在使用的變量名稱,您尚未定義或在代碼後面定義的變量名稱比第一次使用的變量名稱要早。 – A4L 2014-09-25 10:25:19

回答

2

我不知道oneName的類型。如果它是一個列表,你可以從標準的API使用Collections.sort()方法:

Collections.sort(oneName, new Comparator<OneName>() 
    { 
     public int compare(OneName o1, OneName o2) 
     { 
      return o2.getCount() - o1.getCount(); 
     } 
    }); 

隨後的oneName的前4個元素將是具有最高計數的人。

在您的代碼中,只需將上一個循環替換爲Collections.sort()即可。然後,您可以得到4個最大計數(你必須檢查的界限數組索引):

OneName a = oneName.get(0); 
OneName b = oneName.get(1); 
OneName c = oneName.get(2); 
OneName d = oneName.get(3); 
0

在oneName

公衆詮釋的compareTo(對象o){ INT 實現可比接口ont = this.get(i).getCount(); OneName oneName =(OneName)o; int ont1 = oneName.get(i).getCount(); return ont> ont1; }

Collections.sort(onename); 檢查比較方法中的計數,它將按降序排列。 然後從列表中獲取第一個元素。

相關問題