Массив не будет выводить общее количество чисел - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь разрешить пользователю отправлять свои результаты тестов, а затем получать общие и средние оценки. У меня есть отдельный класс, который называется студент, чтобы упростить некоторые задачи.

Это класс ученика:

public class Student {
   private String name;
   private int numOfQuizzes;
   private double totalScore;

   public Student(String name){
       this.name = name;
   }
   public String getName() {
       return name;

   }public void addQuiz(int score){
        numOfQuizzes++;
        totalScore += score;

   }public double getTotalScore() {
       return totalScore;
   }

   public double getAverageScore(){
       return totalScore/(double)numOfQuizzes;
   }
}

Тогда это мой основной класс.

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

    Scanner scoreInput = new Scanner(System.in);

    while (true) {
        System.out.print("Please enter your scores (q to quit): ");

        String q = scoreInput.nextLine();

        scores.add(q);

          if (q.equals("q")) {
              scores.remove("q");

       Student student = new Student(name);

       System.out.println("Students Name: " + student.getName());
       System.out.println("Total Quiz Scores: " + student.getTotalScore());
       System.out.println("Average Quiz Score: " + student.getAverageScore());
       break;
    }
  }
 }
}

Это токовый выход.

What is your name? tom
Please enter your scores (q to quit): 13
Please enter your scores (q to quit): 12
Please enter your scores (q to quit): 5
Please enter your scores (q to quit): q
Students Name: tom
Total Quiz Scores: 0.0
Average Quiz Score: NaN

1 Ответ

0 голосов
/ 08 мая 2018

Когда вы читаете свои значения, вам нужно проверить, является ли это строка или целое число, вы хотите добавить только целые числа. Вы можете сделать что-то вроде:

try{
 do{
    String q = scoreInput.nextLine();
    if(q.equals("q"){
       //Do something, like break
       break; 
    }

 int numVal = Integer.valueOf(q); 

 scores.addQuiz(numVal); 
} catch (Exception e){
 //Handle error of converting string to int
}
}while(true); 
//Once you have all the scores, be sure to call your averageScore method
averageScore();

Как только вы наберете баллы, ваш метод среднего балла должен выглядеть примерно так:

public double averageScore(){
   if(scores != null){
     for(int score : scores){
        totalScore += score; 
     }
     return totalScore/scores.size(); 
}

Ваш класс ученика может выглядеть так:

  public class Student {
   private String name;
   private int numOfQuizzes;
   private double totalScore;
   private ArrayList<Integer> scores;

   public Student(String name){
       this.name = name;
       scores = new ArrayList<Integer>();
   }

   public String getName() {
       return name;

   }public void addQuiz(int score){
        scores.add(score); 
   }

   public double getTotalScore() {
       for(int score : scores){
           totalScore += score; 
       }
       return totalScore;
   }

public double averageScore(){
   if(scores != null){
     for(int score : scores){
        totalScore += score; 
     }
     return totalScore/scores.size(); 
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...