|
|
|
|
Strumenti |
16-09-2018, 11:59 | #1 |
Junior Member
Iscritto dal: Sep 2018
Messaggi: 1
|
[Java] - Metodi double con lista
Ciao a tutti essendo nuovo ho cercato la sezione per presentarsi, ma non l'ho trovata, mi scuso se vi richiedo un problema senza essermi presentato.
Il metodo addResponse(Question, List<String>) aggiunge le risposte dello studente alla domanda data: la lista contiene le risposte che lo studente considera corrette. Il metodo restistuisce il punteggio raggiunto dallo studente per le risposte a quella domanda; il punteggio è calcolato come (N - FP - FN)/N dove: •N è il numero di risposte totali per la domande, •FP è il numero di risposte fornite dallo studente che non sono corrette per la domanda, •FN è il numero di risposte corrette per la domanda che non sono state fornite dallo studente. Il metodo totalScore() restituisce la somma dei punteggi per le risposte alle singole domande. Il mio codice è, spero di formattarlo nel modo giusto sennò mi scuso Codice:
public class Assignment { private String id; private ExerciseChapter chapter; List<Question> questions = new LinkedList<>(); public Assignment(String iD, ExerciseChapter chapter) { // TODO Auto-generated constructor stub this.id = iD; this.chapter = chapter; } public String getID() { return id; } public ExerciseChapter getChapter() { return chapter; } public double addResponse(Question q,List<String> answers) { q.addAssignment(answers); double n = q.numAnswers(); double fp = answers.stream().count(); double fn = questions.stream().flatMap(f->f.getCorrectAnswers().stream()).count(); double res = (n - fp - fn) / n; return res; } public double totalScore() { return -1; } } Posto anche la classe Question in quanto sono correlate Codice:
public class Question { private String question; private Topic mainTopic; HashSet<Answer> answers = new HashSet<>(); List<String> assignments = new LinkedList<>(); public Question(String question, Topic mainTopic) { this.question = question; this.mainTopic = mainTopic; mainTopic.addQuestion(this); } public String getQuestion() { return question; } public Topic getMainTopic() { return mainTopic; } public void addAnswer(String answer, boolean correct) { Answer a = new Answer(answer,correct); answers.add(a); } @Override public String toString() { return getQuestion() + " (" + getMainTopic() + ")"; } public long numAnswers() { return answers.size(); } public Set<String> getCorrectAnswers() { return answers.stream().filter(f->f.getCorrect()).map(Answer::getAnswer).collect(toSet()); } public Set<String> getIncorrectAnswers() { return answers.stream().filter(f->!f.getCorrect()).map(Answer::getAnswer).collect(toSet()); } public void addAssignment(List<String> answers2) { // TODO Auto-generated method stub assignments.addAll(answers2); } } |
02-10-2018, 12:53 | #2 | |
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Immagina che hai un compito con 20 domande.
Lo studente risponde a 10 domande correttamente, a 5 in modo sbagliato e 5 domande le salta. Il punteggio finale è (20-5-5)/20 = 0.5. Dove N = 20, Fp = 5 e Fn = 5. Non riesco a capire il metodo addResponse(...). Quote:
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli! |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:42.