所以我想创建一个构造函数,它从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");
}
}
}
我想循环浏览文件以获得与存储文件一样多的学生,这样我就可以操纵平均成绩等等。这是一个帮助提高我的开发技能的个人项目,因此非常感谢任何帮助,有用的教程链接和提示。但请不要提出简单的例子,比如我已经读过的许多教程,只使用一种数据类型。
感谢您的帮助!
答案 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];