我正在使用Java在Eclipse Indigo中完成一项任务。我必须为学校创建一个程序,该程序是一个拼写测试程序。我已经能够允许员工和学生登录并更改密码并编辑帐户。我也能够创建测试并访问它们进行编辑。但我不能做的一件事是访问列表中的可用测试以查看已设置的测试数量。我不知道在我的代码中要更改什么来解决这个问题。 要显示测试,我创建了一个名为 displayTest 的方法。我使用 HashFile 为测试创建了存储空间。
这里我已经为 HashFile 中的测试保存了存储空间。
String test_FILENAME = "datafiles/test.dat";
HashFile testFile = new HashFile(test_FILENAME, 100, new Test());
我继续使用以下方法添加测试(我在编码文档的顶部有变量测试的存储空间):
public void addTest() {
Test test = new Test();// create storage for a teacher
test.input(); // read the teacher details in through the keyboard
testFile.store(test); // store the teacher in the teacher file
我也可以使用以下方式编辑帐户(PC等来自我使用的其他类)
public void editTest() {
String testNo;
PC_Dialog editTests = new PC_Dialog("Edit Test", "Test No", "Find");// create a dialog box to ask for the teacher number
editTests.choice();// display the dialog box
testNo = editTests.getField(21); // get the teacherNo that has been entered
test = (Test) testFile.retrieve(testNo); // retrieve the teacher from the file
if (test != null) {// check if the teacher is found
test.edit();// yes so display it for editing
testFile.store(test); // store the teacher back in the teacher file
} else
JOptionPane.showMessageDialog(null, "Unable to find the test!");// not found so give an error message
}// end of method
但是在 displayTest()中我遇到了一些问题。 displayTest旨在允许教师查看所有测试集,以查看要编辑哪些测试以及单击按钮时删除哪些测试。但问题是 if(test.year == year){ 在第一个年下面有一条红线,当我将鼠标悬停在它,它说' 年无法解决或不是字段' 。任何人都可以帮我尝试使displayTest部分从数据文件中收集测试并将其显示在表格上吗?我是Stackoverflow的新手,一年前只使用过一次。如果有人对新手的工作感到沮丧,我很抱歉,但这实际上就像我第一次使用Stackoverflow一样。非常感谢帮助,谢谢。
我自己改变了代码:
public void displayTest() {
Test testNo = new Test();
Test yearGroup = new Test();
Test date = new Test();
PC_Table table = new PC_Table("Tests Available", 0, "Test Number, Date, Year Group", "OK");
int row = 1;// a counter for the current row
// prepare the file for serial access
testFile.resetSerialAccess();
// loop through all the records in the event file
while (testFile.moreSerialRecords()) {
// read the next record
Test test = (Test) testFile.getNextSerialValue();{
// retrieve the reason
// add a row to the table and put the values in
table.addRow();
table.setValueAt(test.testNo, row, 1);
table.setValueAt(test.date, row, 2);
table.setValueAt(test.yearGroup, row, 3);
row++;
}
table.choice();
}
}// end of method
表中没有显示测试数据库(测试类)的内容。
答案 0 :(得分:0)
你有
Test date = new Test();
“Test”是该类的名称。 “date”是该类的实例名称。 你说错误在
if (test.year == year)
我在代码中没有看到这一行,但你想要的是
if (date.year == year)
祝你好运!