首页 > 解决方案 > 将文本文件中的名称与数字分开

问题描述

我想要做的是读取一个看起来像这样的文本文件:

Tom 96 95 94 93 54

并将名称和数字分开。然后我将打印学生的姓名总分(所有数字的总和)和平均值。我有一个名为 Student 的单独课程,其中包含以下课程:

private String name;
   private int numOfQuizzesTaken;
   private int totalScore;
   public Student(String name){
       this.name = name;
   }
   public String getName() {
       return name;
   }
   public int getTotalScore() {
       return totalScore;
   }
   public void addQuiz(int score) {
       totalScore = totalScore + score;
       numOfQuizzesTaken++;
   }
   public double getAverageScore(){
       return totalScore/(double)numOfQuizzesTaken;
   }
}

我知道我需要使用一个数组,但我不知道如何将名称与数字分开并存储这些要使用的数字。我写了一个没有 txt 文件的类似代码,它看起来像这样:

Scanner nameInput = new Scanner(System.in);
    System.out.print("What is your name? ");
    String name = nameInput.next();

    Student student = new Student(name);


    student.addQuiz(96);
    student.addQuiz(94);
    student.addQuiz(93);
    student.addQuiz(92);
       System.out.println("Students Name: " + student.getName());
       System.out.println("Total Quiz Scores: " + student.getTotalScore());
       System.out.println("Average Quiz Score: " + student.getAverageScore());

希望这能让我对我正在尝试做的事情有所了解,并希望我能得到任何帮助。

标签: javaarraysclassarraylisttext

解决方案


您需要将文件读入字符串,然后用“”拆分。从那里你将有第一个索引是名称,其他索引是分数

File score = new File("quiz.txt");
Scanner scn = new Scanner(new FileInputStream(score));
String buffer = "";
while (scn.hasNext()) {
      buffer += scn.nextLine() + "\n";
}
String[] content = buffer.trim().split(" ");
String name  = content[0] ;
Student student = new Student(name);
for (int a = 1 ; a < content.length; a++) {
    int scoreval = Integer.parseInt(content[a]);
    student.addQuiz(scoreval);
}

推荐阅读