2014-09-25 22 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); 检查比较方法中的计数,它将按降序排列。 然后从列表中获取第一个元素。

相关问题