Я пытаюсь написать программу, которая принимает записи и помещает их в список. Однако, когда я проверить функцию, которая считывает данные из файла, я получаю сообщение об ошибке с указаниемJava: нестатический класс и статический вызов
Cannot make a static reference to the non-static field aBook
Когда я делаю это, однако статичны, программа просто печатает пустую запись.
Вот соответствующие части Главное:
import java.io.*;
import java.util.*;
public class AddressBookApplication {
AddressBook aBook = new AddressBook(null, null, null, null, null, null, null, null);
public static void main(String[] args) {
AddressBookApplication start = new AddressBookApplication();
Scanner input = new Scanner(System.in);
Menu mainM = new Menu();
String filename = " ";
mainM.mainMenu(); //Prints out a basic menu with options for input.
System.out.println("t) Read Test");
String testChar = ""; //Activate test
testChar = input.next();
if(testNumber.equals("t")){
filename = "testfile.txt";
start.init(filename);
System.out.println(aBook);
}
Затем программа переходит к инициализации для чтения файла:
public void init(String f){
AddressEntry newEntry = new AddressEntry();
File file = new File(f);
try {
FileReader fi = new FileReader(file);
BufferedReader buffR = new BufferedReader(fi);
String lineRead;
while((lineRead = buffR.readLine()) != null){
lineRead = buffR.readLine();
newEntry.setFNAME(lineRead);
lineRead = buffR.readLine();
newEntry.setLNAME(lineRead);
lineRead = buffR.readLine();
newEntry.setStreet(lineRead);
lineRead = buffR.readLine();
newEntry.setCity(lineRead);
lineRead = buffR.readLine();
newEntry.setState(lineRead);
lineRead = buffR.readLine();
newEntry.setZip(lineRead);
lineRead = buffR.readLine();
newEntry.setPhone(lineRead);
lineRead = buffR.readLine();
newEntry.setEMAIL(lineRead);
aBook.addEntry(newEntry);
}
buffR.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
AddressBook класс:
import java.util.*;
public class AddressBook extends AddressEntry {
public AddressBook(String fn, String ln, String st, String ci, String sta, String zi, String tp, String em){
super();}
List<AddressEntry> bookA = new LinkedList<AddressEntry>();
public void addEntry(AddressEntry a){
bookA.add(a);
}
`
Если вам нужен класс AddressEntry, я тоже могу опубликовать его, но я уверен, что проблема Я исхожу из моего основного().
Java: нестатический класс и статический вызов, исключение времени компиляции само по себе говорит все. Вы делаете неправильный доступ. Другие уже указали, что вам нужно сделать для решения вашей проблемы. – Acewin