读入并使用文本文件java

时间:2014-03-03 18:03:29

标签: java file loops io

我正在尝试在CS课程的介绍中完成我的实验室,并且无法从txt文件中读取信息并使用它。

到目前为止,我的代码如下:

import java.io.*;
import java.util.*;

public class loops {
public static void main (String [] args) throws FileNotFoundException{

File myFile = new File("Snowboard_Scores.txt");
Scanner input = new Scanner(myFile);

String name;
String country;
int snow1;
int snow2;
int snow3;
double score;
int max = 0;

while (input.hasNext() ){
    System.out.println(input.nextLine());
    max++;
}
System.out.println(max);

for (int count = 0; count < max; count ++){

}
}
}

实验室很简单,我正在比较4个不同滑雪板爱好者的三个分数。每个滑雪者都有一个名字,一个国家和3个评委评分。我需要对得分进行平均,然后将其与所有滑雪板爱好者进行比较,看看谁拥有最高分,然后打印出滑雪板爱好者的名字和国家。

我正在努力以一种有用的方式收集和存储所有数据。我们实验室目前无法使用阵列,任何人对如何解决这个问题都有任何想法?

Snowboard_Scores.txt:

 Shaun White
 United States
 9.7
 9.8
 9.6
 Bob Saget
 Yugolsavia
 1.4
 2.1
 1.9
 Morgan Freeman
 Antartica
 10.0 
 9.9
 9.8
 Diana Natalicio    
 Brazil
 8.7
 8.7
 9.2 

2 个答案:

答案 0 :(得分:0)

太简单了;
在读取数据时处理数据;
阅读每个滑雪板并与最佳的前值进行比较;
然后选择最佳值作为最佳值;见下面的代码

import java.io.*;
import java.util.*;

public class loops {
public static void main (String [] args) throws FileNotFoundException{

    File myFile = new File("Snowboard_Scores.txt");
    Scanner input = new Scanner(myFile);

    String name = "";
    String country = "";
    double score = 0.0;

    while (input.hasNext() ){
        String tmp_name = input.nextLine();
        String tmp_country = input.nextLine();
        double tmp = Double.parseDouble(input.nextLine())/3;
        tmp += Double.parseDouble(input.nextLine())/3;
        tmp += Double.parseDouble(input.nextLine())/3;
        if(tmp > score){
            name = tmp_name;
            country = tmp_county;
            score = tmp;
        }
    }
    System.out.println(name);
    System.out.println(country);
}
你是对的。一行错过了

答案 1 :(得分:0)

稍作修改。

while (input.hasNext()){

 String tmp_name = input.nextLine();
 String tmp_country = input.nextLine();

 double tmp_avg = Double.parseDouble(input.nextLine())/3;
 tmp_avg += Double.parseDouble(input.nextLine())/3;
 tmp_avg += Double.parseDouble(input.nextLine())/3;

 if(tmp_avg > score){
  score = tmp_avg;
  name = tmp_name;
  country = tmp_country;
 }
}