繁体   English   中英

如何更改其中一个课程,以便让我允许学生多次使用多个考试?

[英]how can i change one of these classes to enable me to allow the student to take multiple tests with multiple marks?

正如我之前所说,我想知道如何更改其中一个课程,以便让我允许学生多次进行多项考试?

这是第一堂课

public class Student {

 private String name;
 private int noOfExams;
 private double totalMark;

public Student (String name, int noOfExams, double totalMark) {
    this.name = name;
    this.noOfExams = noOfExams;
    this.totalMark = totalMark;     
}
public void setName (String Name) {
    this.name = name;
}
public void setnoOfExams (int noOfExams) {
    this.noOfExams = noOfExams;
}
public void settotalMark (double totalMark) {
    this.totalMark = totalMark;
}

public String getName (){
    return name;
}
public int getnoOfExams (){
    return noOfExams;
}
public double gettotalMark() {
    return totalMark;
}
public  double getAverageMark () {
    return (totalMark/noOfExams);
}
}

这是测试人员类

public class studentTester {

public static void main(String[] args) {

    Student Padraig = new Student ("Padraig" , 1 , 40); 

    System.out.println("The Student's name is : " + Padraig.getName());
    System.out.println("The Student has took " + Padraig.getnoOfExams() + " exams");
    System.out.println("The Student's Mark is " + Padraig.gettotalMark());
}
}

我不会为你做功课,但这里有一些想法让你开始。

首先,您必须了解数组列表 您只需要这样的数据结构,以便在“多次测试”中“存储”复数带来的多个值。

然后你会添加一个像这样的方法

public void addTest(String testName, int mark) 

到你的班级。 然后,该方法将获取传入的信息并将其添加到之前创建的阵列/列表中。 然后你的“测试人员”代码只是重复调用add方法,添加多个测试。

最后,您将添加一个方法,如

public List<String> getTestNames() 

要么

public List<Integer> getTestMarks() 

这将允许检索该附加信息。

“阵列”是更基本/基本/内置的概念; 所以它们更容易理解(需要更少的上下文知识); 但是列表更有活力。 所以,你选择你想花多少精力(如果你真的有兴趣学习,你只需要尝试两种方法)。

最后一步是使用更好的抽象。 上面的例子将测试视为“非正式”对“测试名称”和“标记”。 这意味着:两个具有不同值的列表。 Insted,你可以创建一个类

public class Test {
 ... fields for name, mark, ...

包装这些信息。 然后你可以做更多的事情,比如查看这些对象的equals方法......

因此:你可以在这里做许多很多事情 - 你只需要开始。

要让它们采用多个标记,只需将它包围在一个while循环中,如果你想让它随机问题,每次只需要在哈希映射之类的地方放置多个问题。

例:

HashMap questions<Integer, String> = new HashMap<Integer, String>();

Random questionNumber = new Random();

questions.put(1, "What is 1+1");

While(takingTest == true) {

// don't put 10 if you have less than 10 questions; 0-9
System.out.println(question.get(questionNumber.nextInt(10)));

// make sure to be able to close the loop as this is an example

}

如果你经常多次得到所有问题,因为你从来没有能力结束你的while循环

注意:如果代码有问题,因为我不在我的工作站进行测试。 这是一般性答案

您需要java中的数据结构来在“多个测试”中存储多个值。

您可以联系oracle帮助中心获取更多信息。

https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM