Java 控制台输出和文件输出似乎不同
所以我在做这个程序,我在指定的文件夹中浏览每个文件夹,如果文件夹中有任何文件,我会阅读它们 这些文件如下所示:Java 控制台输出和文件输出似乎不同,java,Java,所以我在做这个程序,我在指定的文件夹中浏览每个文件夹,如果文件夹中有任何文件,我会阅读它们 这些文件如下所示: file name: grades Mait 5 5 5 Kati 3 3 3 Vello 4 4 4 所以我读入每一行,每一行的第0个元素是我添加到数组中的学生的名字。然后我计算分数,然后计算中位数 文件也位于以类名命名的文件夹中。例如,数学有它的每一个数学成绩 现在程序的任务是读取所有这些文件,然后生成一个输出文件,其中包含每个班级的每个学生的名字和他们的中位数,然后是他们所有
file name: grades
Mait 5 5 5
Kati 3 3 3
Vello 4 4 4
所以我读入每一行,每一行的第0个元素是我添加到数组中的学生的名字。然后我计算分数,然后计算中位数
文件也位于以类名命名的文件夹中。例如,数学有它的每一个数学成绩
现在程序的任务是读取所有这些文件,然后生成一个输出文件,其中包含每个班级的每个学生的名字和他们的中位数,然后是他们所有成绩的中位数
这就是我的输出现在的样子:
Nimi: Mait Keskmine hinne: 5.0 Aine: ..\text\students\english\grades
Nimi: Kati Keskmine hinne: 3.0 Aine: ..\text\students\english\grades
Nimi: Vello Keskmine hinne: 4.0 Aine: ..\text\students\english\grades
Nimi: Mait Keskmine hinne: 1.0 Aine: ..\text\students\math\grades
Nimi: Kati Keskmine hinne: 2.0 Aine: ..\text\students\math\grades
它不是用英语写的,而是用名称:,中间值;,的形式,类名
现在的问题是,当我将相同的内容打印到控制台时,我得到的不是文件,而是:
Nimi: Mait Keskmine hinne: 5.0 Aine: ..\text\students\english\grades
Nimi: Kati Keskmine hinne: 3.0 Aine: ..\text\students\english\grades
Nimi: Vello Keskmine hinne: 4.0 Aine: ..\text\students\english\grades
Nimi: Mait Keskmine hinne: 5.0 Aine: ..\text\students\english\grades
Nimi: Kati Keskmine hinne: 3.0 Aine: ..\text\students\english\grades
Nimi: Vello Keskmine hinne: 4.0 Aine: ..\text\students\english\grades
Nimi: Mait Keskmine hinne: 1.0 Aine: ..\text\students\math\grades
Nimi: Kati Keskmine hinne: 2.0 Aine: ..\text\students\math\grades
现在,正如您所看到的,由于某种原因,读取的第一个文件被复制了。当我只有一个文件夹可供程序读取时,不会出现此问题。但对于更多的文件夹,它确实如此
为什么这对我来说是个问题?因为当我的程序中有重复的值时,我不知道如何计算一个学生在学校取得的所有成绩的中位数
这里可能有什么问题,我如何解决
以下是我在项目中的所有类,以便大家可以看到代码:
Main.java:
package files;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
Path lessons = Paths.get("../text/students");
FileVisitor file = new FileVisitor();
try {
Files.walkFileTree(lessons, file);
} catch (IOException e) {
e.printStackTrace();
}
List<Path> files = file.askFiles();
List<Student> students = new ArrayList<>();
for(Path adress:files){
//System.out.println(adress.getFileName());
try {
BufferedReader textIn = new BufferedReader(new FileReader(adress.toString()));
String line;
while((line = textIn.readLine()) != null){
String[] readContent = line.split(" ");
Student student = new Student(readContent[0],adress.toString());
//System.out.println("sad");
for(int i = 1;i < readContent.length; i++){
student.addGrade(readContent[i]);
//System.out.println(adress.getParent()+ " ");
}
students.add(student);
}
PrintWriter output = new PrintWriter(new FileWriter("../text/opilased_out"));
for(Student i:students){
output.println("Nimi: "+i.askName() + " " + "Keskmine hinne: "+i.askMedian() + " " + "Aine: "+i.askSubject());
System.out.println("Nimi: "+i.askName() + " " + "Keskmine hinne: "+i.askMedian() + " " + "Aine: "+i.askSubject());
}
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
包文件;
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.util.ArrayList;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args)引发FileNotFoundException{
路径课程=路径。获取(“../text/students”);
FileVisitor file=newfilevisitor();
试一试{
walkFileTree(课程,文件);
}捕获(IOE异常){
e、 printStackTrace();
}
列表文件=file.askFiles();
List students=new ArrayList();
for(路径地址:文件){
//System.out.println(address.getFileName());
试一试{
BufferedReader textIn=新的BufferedReader(新文件读取器(address.toString());
弦线;
而((line=textIn.readLine())!=null){
String[]readContent=line.split(“”);
学生=新学生(readContent[0],address.toString());
//System.out.println(“sad”);
for(int i=1;i
Student.java:
package files;
import java.util.ArrayList;
import java.util.List;
public class Student {
String studentName;
List<Integer> studentGrades = new ArrayList<>();
String subjectName;
double sum;
public Student(String name, String subject) {
subjectName = subject;
studentName = name;
}
public String askSubject(){
return subjectName;
}
public String askName(){
return studentName;
}
public void addGrade(String grade) {
studentGrades.add(Integer.parseInt(grade));
//System.out.println(studentGrades);
for (int i = 0;i < studentGrades.size(); i++){
//System.out.println(studentGrades.get(i));
}
}
public double askMedian() {
double median = 0;
for (int i = 0;i < studentGrades.size(); i++){
//System.out.println(studentGrades.get(i));
median += studentGrades.get(i);
sum = median/studentGrades.size();
}
//System.out.println(studentGrades);
//System.out.println(sum);
return sum;
}
}
包文件;
导入java.util.ArrayList;
导入java.util.List;
公立班学生{
字符串studentName;
List studentGrades=new ArrayList();
字符串subjectName;
双和;
公立学生(字符串名称、字符串主题){
subjectName=受试者;
studentName=姓名;
}
公共字符串askSubject(){
返回subjectName;
}
公共字符串askName(){
返回学生姓名;
}
公共坡率(字符串坡率){
add(Integer.parseInt(grade));
//系统输出打印LN(学生成绩);
对于(int i=0;i
FileVisitor.java:
package files;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class FileVisitor extends SimpleFileVisitor<Path> {
private List<Path> adresses = new ArrayList<>();
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc)
throws IOException {
return super.postVisitDirectory(dir, exc);
}
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException {
return super.preVisitDirectory(dir, attrs);
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
adresses.add(file);
//System.out.println(file);
return super.visitFile(file, attrs);
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc)
throws IOException {
return super.visitFileFailed(file, exc);
}
public List<Path> askFiles(){
return adresses;
}
}
包文件;
导入java.io.IOException;
导入java.nio.file.FileVisitResult;
导入java.nio.file.Path;
导入java.nio.file.SimpleFileVisitor;
导入java.nio.file.attribute.BasicFileAttributes;
导入java.util.ArrayList;
导入java.util.List;
公共类FileVisitor扩展了SimpleFileVisitor{
私有列表地址=新的ArrayList();
@凌驾
公共文件VisitResult postVisitDirectory(路径目录,IOException exc)
抛出IOException{
返回超级访问后目录(目录,exc);
}
@凌驾
公共文件VisitResult preVisitDirectory(路径目录,基本文件属性属性属性)
抛出IOException{
返回super.preVisitDirectory(dir,attrs);
}
@凌驾
公共文件VisitResult visitFile(路径文件,基本文件属性属性属性)
抛出IOException{
address.add(文件);
//System.out.println(文件);
返回super.visitFile(文件,attrs);
}
@凌驾
公共文件VisitResult visitFileFailed(路径文件,IOException exc)
抛出IOException{
返回super.visitFileFailed(文件,exc);
}
公共列表askFiles(){
回信地址;
}
}
任何帮助都是真实的