从数据库问题显示

时间:2014-02-17 11:50:18

标签: java eclipse eclipse-indigo

我正在使用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

表中没有显示测试数据库(测试类)的内容。

1 个答案:

答案 0 :(得分:0)

你有

Test date = new Test();

“Test”是该类的名称。 “date”是该类的实例名称。 你说错误在

if (test.year == year)

我在代码中没有看到这一行,但你想要的是

if (date.year == year)
祝你好运!