在FILE I / O中按团队名称查找最高编号

时间:2013-12-01 02:53:37

标签: java file-io

我有一个team.txt文件,其中包括:name raised $和teamName,即:

Name    Raised   Team
Peter   400.27   Alpha
John    350.99   Beta
Anne    1200.00  Gamma

现在我现在如何寻找int并将它们全部添加但是我不知道如何区分如何编写一个查看数字的程序并告诉我哪个团队筹集了大部分资金。这就是我到目前为止所做的:

Scanner kbd = new Scanner(System.in);
Scanner input = new Scanner(new File("team.txt"));
input.nextLine();  // get rid of header line

3 个答案:

答案 0 :(得分:0)

您可以保留一个保持当前最高值的计数器,并保留一个包含最高团队名称的字符串。

int highest = 0; String highestTeam = "";
while (!EOF()) {
    // Read in team name, raised value
    if (raisedValue < highest) {
        highest = raisedValue;
        highestTeam = teamName;
    }
}

最后,highest将包含最高的值,而highestTeam将是提升最多的团队的名称。

答案 1 :(得分:0)

您可以为每一行使用拆分。 split方法根据spcified分隔符将行转换为字符串数组。在这种情况下,我使用一个或多个空格作为分隔符\\s+

double alphaTotal = 0;
double betaTotal = 0;
double gammaTotal = 0;

input.nextLine();
while (input.hasNextLine()) {
     String line = input.nextLine();
     String[] tokens = line.split("\\s+");
     double raised = Double.parseDouble(tokens[1].trim());

     if ("Alpha".equals(tokens[2])){
         alphaTotal += raised;
     } esle if ("Beta".equals(tokens[2])) {
         betaTotal += raised;
     } else if ("Gamma".equals(tokens[2])) {
         gammaTotal += raised;
     }
}

// Print out the winner
if (alphaTotal > betaTotal && alphaTotal > gammaTotal){
    System.out.println("Team Aplha wins with $" + alphaTotal);
} else if ( .... .... .... ){
    ....
} else if ( .... .... .... ){
    ....
}

分割后的数组看起来像这样

tokens = {"Peter", "400.27", "Alpha"};

400.27最初是String,因此您必须对其进行解析。

简单if语句将决定每一行中的哪个团队。

答案 2 :(得分:0)

你说你可以把它们全部添加起来,所以我假设你可以把它们放在一个数组中。假设double[] arr包含所有双精度值。

这是如何确定最高值:

 double max = 0; // initially max number is 0
 for (double i: arr) // for every double in the array of doubles
     if (i > max) max = i; // if this number is > the last recorded max, 
                           // set this as the new max