gpt4 book ai didi

java - 从另一个类的函数的返回值分配对象值?

转载 作者:行者123 更新时间:2023-12-01 05:17:13 25 4
gpt4 key购买 nike

因此,在完成最后一次分配给我的作业后,我被指示获取该代码并将其从命令行参数更改为从文件中读取数据。一切都很顺利,除了我应该有一个函数接口(interface),该函数从文件中调用数据,然后执行与以前相同的操作。

现在,我的驱动程序类中的对象数组应该被分配由 DAO 类获取的值。 DAO 类基于接口(interface)。驱动程序类对我大喊大叫,说我创建的对象必须从 DAO 类中的静态函数分配,但该方法不能是静态的...

这次我错过了什么?..

界面:

public interface ScanTextFile {

public Object[] readTextData() throws FileNotFoundException;
}

DAO 类:

public class StudentDAO implements ScanTextFile {

public Object[] readTextData() throws FileNotFoundException {

Student[] studentRecord = new Student[3];

String dataFileName = "data.txt";
int numberOfRows = 0;

File dataFile = new File(dataFileName);
Scanner scan = new Scanner(dataFile);
int i = 0;
String delim = "\\|";

// checks number of rows in data file, making sure there are 3 total
for(i = 0; scan.hasNextLine(); i++){
numberOfRows++;
}
if(numberOfRows < 3){
System.err.format((numberOfRows) + " argument(s) - expected 3");
System.exit(0);
} else if(numberOfRows > 3){
System.err.format((numberOfRows) + " arguments - expected 3");
System.exit(0);
}

for(i = 0; i < numberOfRows; i++){
if(scan.hasNextLine()){
String temp = scan.nextLine();
String[] tempData = new String[4];
Student tempStudent = null;

for(i = 0; i < tempData.length ; i++){
tempData = temp.split(delim);
}
System.out.println("DEBUG *** Finished extracting data, creating object...");
System.out.println("DEBUG Student Data = [�" + temp + "]");

GregorianCalendar date = new GregorianCalendar();
try {
date = DateUtil.convertFromDMY(tempData[3]);
} catch (ParseException e1) {
e1.printStackTrace();
}

tempStudent = new Student(tempData[0], tempData[1], tempData[2], date);
studentRecord[i] = tempStudent;
}
}

return studentRecord;
}

}

驱动程序类别:

public class Lab3 { 

public void main(String[] args) throws ParseException, FileNotFoundException{

Student[] allData = new Student[3];
allData = (Student[]) StudentDAO.readTextData();

System.out.println("");
System.out.println("DEBUG *** Student Objects created, displaying all Students...\n");
for(Student s : allData){
Print.print(s);
}
}
}

编辑感谢您指出该错误,谢谢大家,但现在我明白了

Exception in thread "main" java.lang.NoSuchMethodError: main

这是因为 StudentDAO 没有 main 吗?

另一次编辑

@mprabhat 感谢您指出一个非常愚蠢的错误,仍然不知道我怎么没有看到它 ><

现在,当扫描仪尝试从文件中读取数据时,我遇到了问题。

1 - 表示无法找到数据文件,即使它位于我的 src 文件夹中。

2 - 扫描仪线路上也出现错误,我不应该在文件上使用扫描仪吗?我应该使用... DataInputStream 吗?

最佳答案

您的方法readTextData不是静态的,但您可以使用类名StudentDAO像静态方法一样访问它

StudentDAO.readTextData();

而是创建一个对象StudentDAO,然后调用readTextData

Student[] allData = new Student[3];
StudentDAO studentDAO = new StudentDAO();
allData = (Student[]) studentDAO.readTextData();

Lab3 中的问题是您的主要方法没有正确的签名。

public static void main(String[] args) 是正确的签名,您的签名缺少 static,因此您会收到 java.lang.NoSuchMethodError :主要

关于java - 从另一个类的函数的返回值分配对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10974639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com