我想做一个给学生打分的程序。
首先它应该询问学生的ID,然后你需要给同一个学生的每个标准的分数。
这个代码并没有改变任何东西后,我给的分数。
BufferedReader br = new BufferedReader(new FileReader("project.csv"));
while ((line = br.readLine()) != null) {
String[] cols = line.split(",");
System.out.println("Please choose a criteria (2-7) ?");
int subjectToGiveMark = in .nextInt(); // for creativity is 2
System.out.println("Please enter a mark :");
int mark = in .nextInt(); // which mark should be given
final int size = cols.length;
String[] finalResult = new String[size];
int index = 0;
while (index < finalResult.length) {
if (index == subjectToGiveMark) {
finalResult[index] = mark + "";
} else {
finalResult[index] = cols[index];
}
index++;
}
}
谁能告诉我这是什么问题?请在这里输入图片描述
首先,为了安全起见,你应该用try with resources来读取或写入你的文件,因为你可能会忘记关闭文件,甚至一个异常会阻止你这样做。
try-with-resources语句可以确保每个资源在语句结束时被关闭。
- Java™教程
更多信息。https:/docs.oracle.comjavasetutorialessentialexceptionstryResourceClose.html。
怎么说?比如你现在看的内容,就用try来包装。
try (BufferedReader br = new BufferedReader(new FileReader("project.csv"))) {
// The while code here...
}
你还修改了 finalResult
变量,但并没有对它做任何事情,所以你的变化只是存储在那里,没有更多的东西,这就是为什么你看不到你的变化!你应该在while循环之外创建一个变量,存储所有的行,就像一个列表。
你应该在while循环外创建一个变量,存储所有的行,就像一个列表。否则你可以打开另一个文件(例如 project-output.csv),并在读取其他文件的同时将其写入。
// Same principle as reading
try (BufferedWriter writer = new BufferedWriter(new FileWriter("project.csv"))) {
// Write the result
}
这个答案更详细地解决了写的问题。https:/stackoverflow.coma28852241842548。
读写的例子,我假设是Java 8。
try (BufferedWriter writer = new BufferedWriter(new FileWriter("project-output.csv"))) {
try (BufferedReader reader = new BufferedReader(new FileReader("project.csv"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] cols = line.split(",");
System.out.println("Please choose a criteria (2-7): ");
final int subjectToGiveMark = in.nextInt(); // for creativity is 2
System.out.println("Please enter a mark: ");
final int mark = in.nextInt(); // which mark should be given
cols[subjectToGiveMark] = Integer.toString(mark);
// Here is where you write the output:
writer.write(String.join(",", cols));
writer.newLine();
}
writer.flush();
}
}
你可以在repl.it上看到一个工作实例 https:/repl.itreplsScaredSeriousCookie。