我是一名初级Java程序员,我正试图通过让Boat打印出它的链表内容,来检查我是否成功地将Clients类中存储的链表中的Person实例复制到Boat类实例中名为乘客的链表中。
我正在使用Boat类的givePassengers()方法来打印Boat类——它的乘客链接列表内容。
然而,当我尝试这样做时,我遇到了错误"非静态方法givePassengers()不能从静态上下文中引用",我不知道该写什么来解决这个问题。我在下面列出了我认为是问题代码的内容。我们非常感谢任何协助。
我已将重要代码标记为"//!!"
这是包含船只链接列表的类
import java.io.*;
import java.util.*;
public class Base implements Serializable
{ private LinkedList<Boat> boats = new LinkedList<Boat>();
private Clients clients = new Clients();
public void setup() // !! Here are the instances of the boat class
{ boats.add(new Boat(1, "Ed", 2));
boats.add(new Boat(2, "Fred", 7));
boats.add(new Boat(3, "Freda", 5)); }
public void showpassengers() {
for (Boat i: boats) `// !! The for each loop cycles through each boat to check for passengers`
Boat.givePassengers(); // !! This line produces the error
}
这是船级
import java.io.*;
import java.util.*;
public class Boat implements Serializable
{ private int id;
private String pilot;
private int stops;
private LinkedList<Person> passengers = new LinkedList<Person>();
private double rate = 10.00;
public int scannableId = this.id;
public Boat(int id, String pilot, int stops)
{ this.id = id;
this.pilot = pilot;
this.stops = stops; }
public void givePassengers () {
System.out.println(passengers); // !! this line is supposed to print out the contents of the boat classes' linked list so I can check that it worked.
}
这是个人类
import java.io.*;
import java.text.*;
public class Person implements Serializable
{ private String name;
private int id;
private double cash = 100.00;
private int start = 0;
private int end = 0;
private double charge = 0;
public Person(String name, int id)
{ this.name = name;
this.id = id + 100; }
}
这是包含人员链接列表的类
import java.io.*;
import java.util.*;
public class Clients implements Serializable
{ private LinkedList<Person> clients = new LinkedList<Person>();
private int id = 1;
public Clients() `// !! Here are the instances of Person in the class clients`
{ clients.add(new Person("Homer", id++));
clients.add(new Person("Marge", id++));
}
)
如果这对有帮助的话,下面是根类
import java.io.*;
public class Root
{ public Root() {
new Base();
}
public static void main(String[] args)
{ new Root(); }
private Base base;
}
您的问题在这里:
for (Boat i: boats)
Boat.givePassengers(); // !! This line produces the error
您需要说i.givePassengers()
来引用类Boat
的特定实例。这里有一本关于类和对象之间区别的入门读物。
您不能从Boat静态调用givePassengers(),它不是一个静态方法。您需要从Boat的实例中调用它。在foreach循环中将Boat.givePassengers();
替换为i.givePassengers();
。这将导致当前选定的Boat实例运行givePassengers()。