如何使用int和string处理输入文件

时间:2017-03-13 19:28:20

标签: java string file arraylist int

对于我每周实验室/家庭作业的一部分,我被要求处理一个文本文件并使用jdbc将其推送到数据库。首先,我想弄清楚如何拆分文件的各个内容,结构如下:

1 Alain A 2 75
2 Michael B 3 85
3陈C 1 55
4 Caroline D 2 60
5穆罕默德E 2 60
6 Alex F 1 55
7 Sofia O 3 78
8 Samir O 1 85
9 Rob G 2 78
10 Big K 3 55

第一个数字是学生ID,字符串是姓氏初始的学生姓名,最后两个整数是学生年份和他们的分数。

我认为一旦我将这个输入划分为单独的arraylists,我就可以很容易地弄清楚如何将它推送到数据库,但是我遇到的麻烦就是分割输入。我试过通过使用增量计数器来填充4个单独的arraylists,这个增量计数器选择哪个arraylist推进,并在它超过4时重置为1.

例如(不正确的代码):

while (scanner.hasNext()){ 
  if(counter > 4){counter = 1;}
  if (counter == 1){arraylist1.add;}     
  if (counter == 2){arraylist2.add;}   
  if (counter == 3){arraylist3.add;}   
  if (counter == 4){arraylist4.add;}   
  counter++;  
}

这不行,说实话我完全没想到,但我不知道如何解决这个问题。我仍然想要填充4个不同的arraylists,所以我将信息分开,并且仍然可以通过在列表中使用相同的索引来引用整个集合。

1 个答案:

答案 0 :(得分:0)

错误。您不使用多个列表来保存该数据。

您创建代表一行的一个类,我们将其称为StudentMark类。该类包含ID,名称,等级,......的字段。

你逐行阅读文件;并且对于每一行,您将字符串推入StudentMark构造函数(例如)。确切地说:你想要更多地分解事物;比如让Parser类从文件输入中获取一行。解析器然后将输入拆分为字段;好吧,解析预期的内容(例如使用Integer.parseInt()将成绩字符串转换为实数)。然后该数据用于创建新的StudentMark个对象;然后添加到单个List<StudentMark>

关于优秀OO的一个核心问题:您尝试创建有用的数据结构模型您正在处理的现实方面。使用平面列表来保存这样的“表格”数据当然是可能的;但是嘿:你选择面向对象的静态类型编程语言。因此,要使用该上下文的优点,您需要避免使用字符串列表的平面列表。