从Java

时间:2016-11-30 17:53:20

标签: java csv

所以我想创建一个构造函数,它从csv中读取一行文件,并将第一个令牌保存到一个变量中,将剩余的令牌保存到一个数组中。这个构造函数将用于成绩簿应用程序,但对txt /文件操作不熟悉我很难。

一行如下:

Billy Bob,68,79,95,83

我想将令牌分成这些:

name = Billy Bob

成绩[] =" 68,79,95,83"

这是我到目前为止的代码:

import java.io.*;


public class gradeBook {

    public static void main(String[] args){

        System.out.println("Java Grade Book version 1.0");

        int lineCounter = 0;
        String array[];

        try{
            File data = new   File("/file/path/that/works");
            InputStream f = new FileInputStream(data);
            BufferedReader br = new BufferedReader(new   InputStreamReader(f));

            for (String line = br.readLine(); line != null; line =     br.readLine()) {
                System.out.println(line); // just here to check that the code is working thus far

                //insert code here
                //name should equal first token (which is two names like Billy Bob)
                //grades[] should contain the other double type tokens (e.g. 56,87,89,90)
            }

            br.close();
        }
        catch(Exception e){
            System.err.println("Error: File Couldn't Be Read");
        }
    }
}

我想循环浏览文件以获得与存储文件一样多的学生,这样我就可以操纵平均成绩等等。这是一个帮助提高我的开发技能的个人项目,因此非常感谢任何帮助,有用的教程链接和提示。但请不要提出简单的例子,比如我已经读过的许多教程,只使用一种数据类型。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

将线分割成数组;

String[] input = line.split(",");

String variable = input[0];

int[] grades= new int[input.lenght - 2];

for(int i = 1; i < input.length; i++)
{
    grades[i] = input[i];// you might have to do Integer.pareseInt(input[i]);
}

我没有在IDE中写这个,但逻辑应该是正确的。 你将遇到一个新问题。您的成绩簿只包含最后一个条目。尝试使用2D数组作为等级,使用1D数组作为名称;我个人不会使用数组。我会用arraylist。

答案 1 :(得分:1)

所以我还没有使用方法或其他任何东西来测试我的令牌,但是我已经用这段代码对行进行了标记(ha ha oops,意思是一些):

String[] tokens = line.split(",");
            String name = tokens[0];
            String grade1 = tokens[1];
            String grade2 = tokens[2];
            String grade3 = tokens[3];
            String grade4 = tokens[4];