繁体   English   中英

Java如何读取txt文件并使每一行成为自己的字符串数组

[英]Java how to read a txt file and make each line it's own string array

我有一个作业,我必须从文本文件中读取数据并汇总每一行中的数据。 这是txt文件:

Chen Ruolin     9.2 9.3 9   9.9 9.5 9.5 9.6 9.8    
Emilie Heymans  9.2 9.2 9   9.9 9.5 9.5 9.7 9.6    
Wang Xin        9.2 9.2 9.1 9.9 9.5 9.6 9.4 9.8    
Paola Espinosa  9.2 9.3 9.2 9   9.5 9.3 9.6 9.8    
Tatiana Ortiz   9.2 9.3 9   9.4 9.1 9.5 9.6 9.8    
Melissa Wu      9.2 9.3 9.3 9.7 9.2 9.2 9.6 9.8    
Marie-Eve Marleau   9.2 9.2 9.2 9.9 9.5 9.2 9.3 9.8    
Tonia Couch     9.2 9   9.1 9.5 9.2 9.3 9.4 9.6    
Laura Wilkinson 9.7 9.1 9.3 9.4 9.5 9.4 9.6 9.2

姓名和潜水成绩清单。 我们应该从文件中读取数据,并将其放入数组中(我猜每一行都是它自己的数组),删除每个潜水者的最高和最低分数,并对剩余分数求和。 因此,第一行的输出如下所示:

Chen Roulin: 56.90

我坚持的事情是如何进行一行创建一个数组(在本例中为字符串数组),在该数组中将单词和数字分开并将它们分别放入数组索引中。 更清楚地说,第一行的数组如下所示:

String chenRoulin[] = {"Chen", "Roulin", "9.2", "9.3", "9", "9.9", "9.5", "9.5", "9.6", "9.8};

有了这个,我想我就能对数组中的数值进行Double.parseDouble运算,并将它们加起来,就像我之前解释的那样。 我知道2d数组,并且已经尝试过这种方法,但是由于目前为止发现的所有示例都在创建int或double数组,因此一直停留在同一问题上。 基本上,从文件的每一行中组成数组的最佳/最简单方法是什么? 先谢谢您的帮助。 这是我到目前为止的代码(不多):

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

public class DivingData{  
  public static void main(String[] args) throws IOException {
    File myFile = new File("diving_data.txt");
    Scanner inputFile = new Scanner(myFile);

    String line = inputFile.nextLine();
    String[] chenRoulin = new String[10];


  }
}

需要明确的是,我只是在这项任务的一部分上寻求帮助,而不是试图让某个人在这里为我做这一切。

我坚持的事情是如何进行一行创建一个数组(在本例中为字符串数组),在该数组中将单词和数字分开并将它们分别放入数组索引中

如果确实这是您唯一需要帮助的内容,则只需对String使用split方法,并将空格作为参数:

String line = "Chen Ruolin 9.2 9.3 9 9.9 9.5 9.5 9.6 9.8";
String[] array = line.split(" ");

您可以使用:

line.split("\\s+");

然后针对每个数组元素检查是否可以转换为double。 表达式“ \\ s +”寻找空格分隔符,例如制表符或空格字符。

解决问题的方法基本上有两种:-

1)面向对象的方式-创建一个以String字段作为名称和double数组的类。 每行创建一个对象,然后处理每个对象。

2)您也可以使用Hashmap<String,Double[]> (假设名称是唯一的)并将每一行放入一个条目中。

就解析行而言,还是有两种方法-

i)一种拆分方法line.split(" ") ,它将返回数字数组。

ii)Java中的StringTokenizer API-参见此处http://www.java-samples.com/showtutorial.php?tutorialid=236

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM