1

我想出了一个想法,为我的学校制作一个程序,教师在其中输入问题和答案 A、B、C、D 等,并在完成后创建一个 jar 文件,该文件将成为实际的测试程序。现在我知道如何使程序达到收集教师所有数据的程度,但是我不知道如何进行。我的想法是教师的 jar 将与示例就绪的“测试 jar”(其他问题和答案存储在其变量中)位于同一文件夹中,当教师准备好时,他们的 jar 将简单地编辑“测试 jar”的变量和然后他们可以将“测试 jar”给学生,尽管我不知道如何从另一个 jar 编辑 jar 文件的代码。我该如何处理?提前致谢!

4

3 回答 3

1

基本上,jar 只是一个 Zip 文件。

Java 通过位于

java.util.zip

包裹。

你的代码会是这样的:

ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream(zipFileName));

 // Add a zip entry to the output stream
 outStream.putNextEntry(new ZipEntry(myEntryName));

 // add data to your entry by writing to outStream
 ......
 ......
 //Close zip entry and file streams
 outStream.closeEntry();

还有一个完整的例子。

于 2013-03-05T18:52:33.003 回答
0

如果您尝试使用可自定义的问题和答案进行测验,我建议您使用文本文件来存储选项(问题和答案以及可能的问题类型,例如多项选择或输入一个值或选择一个)。

对于文件的格式可以使用xml或者干脆使用java.util.Properties,使用它的store和load来保存到文件中。

您的属性可以是“totalNumberQuestions”、“question1”“questionType1”“question1option1”等

现在在您的主程序中,查找一个文件: * 如果程序以 args.length > 0 开头,则在单独的 try catch 中查找带有 arg[0] 的文件,因此即使不存在,您也会显示错误消息并继续

  • 如果在与您的程序相同的文件夹中找不到或没有名为“data.txt”的参数,则意味着: File f = new File("data.txt"); if(f.exists()){ //读取输入流

  • else 来自 jar getClassLoader().getResourseAsStream 中的类加载器(在 java.lang.Class 中查找实际函数名

这样,用户可以使用您的第二个 jar 来创建他们的 data.txt,然后将其与提出问题的主 jar 一起打包,或者简单地将其保存在同一个文件夹中,或者在启动程序时将其作为参数传递。

您可以使用 jar 命令重新打包 jar

jar ufMv quiz.jar  data.txt

使用 jar 创建新的 zip:

jar cvfM quiz.jar data.txt yourPackage.*.class 
于 2013-03-05T19:39:21.023 回答
0

You could better make up a database of the questions and answers. The teachers program will write in the database, the child's program will read the database.

于 2013-05-27T05:49:19.750 回答