Введите имя и оценки из пользовательского ввода, чтобы получить среднюю оценку - PullRequest
0 голосов
/ 07 мая 2018

Я работаю над кодом, в котором у вас есть имя учащегося и его оценки, и он печатает его общие баллы и его средние баллы. Я хочу сделать его более функциональным, позволяя пользователю вводить там имя и оценки и получать всю эту информацию обратно. Я могу попытаться преобразовать это в среднее значение по классу, где оно позволяет вводить несколько отдельных имен, баллов и среднего значения, печатать каждое из них отдельно, а затем отображать среднее значение по классу. Это вторая мысль, так как мне нужно, чтобы пользователь сначала вводил оценки и имена .

Это то, что я имею до сих пор. У меня есть отдельный класс, чтобы сделать некоторые вещи проще.

public class Student {
    private String name;
    private int numOfQuizzes;
    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;
        numOfQuizzes++;
    }
    public double getAverageScore(){
        return totalScore/(double)numOfQuizzes;
    }
}

Тогда у меня есть основной метод:

public static void main(String[] args) {
    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());
}   

Вот что он печатает в данный момент:

What is your name? Tom
Students Name: Tom
Total Quiz Scores: 375
Average Quiz Score: 93.75

UPDATE: Это то, что я сделал до сих пор. я добавил цикл и пытался использовать свой класс ученика, но он не работает с массивом.

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;
    }
   }
  } 
}

1 Ответ

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

Поскольку вы только изучаете язык, я дам вам несколько советов, которые отправят вас в путь. Возможно, вы захотите использовать while -loop, чтобы постоянно запрашивать у пользователя новую оценку, пока он не даст вам пустую строку или что-то в этом роде. Вы можете повторно использовать свой сканер, чтобы прочитать новые оценки, и они могут быть преобразованы в целые числа, используя Integer.parseInt. Надеюсь, это позволит вам написать свой код дальше, он уже выглядит великолепно:).

EDIT

Есть несколько моментов, которые можно улучшить в отредактированном коде. Ниже показаны некоторые из них (с использованием import java.io.Console;):

Scanner inp = new Scanner(System.in);

// Request the name
System.out.print("What is your name? ");
String name = inp.nextLine();

// Create the student object
Student student = new Student(name);

// Ask for the grades
System.out.print("Please enter your scores (q to quit): ");
String grade = inp.nextLine();

while (!grade.equals("q")) {
   // Convert the grade to an integer and pass it 
   student.addQuiz(Integer.parseInt(grade));

   // Request a new grade
   grade = inp.nextLine();
}

// Report the results
System.out.println("Students Name: " + student.getName());
System.out.println("Total Quiz Scores: " + student.getTotalScore());
System.out.println("Average Quiz Score: " + student.getAverageScore());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...