英文:
java.lang.NullPointerException? When assigning get method to an arraylist
问题
你好,我正在尝试从另一个类向名为 'Table' 的类添加的顾客订单。
public class PaymentScreenController {
public ArrayList<Customer> allcustomers; // 定义 allcustomers ArrayList
public Table tbl; // 创建 Table 类的实例
@FXML
public void initialize() {
allcustomers = tbl.getCustomers(); // 错误似乎来自这里,当我将 allcustomers 赋值给 table 的 getCustomers 方法时
System.out.println(tbl.getCustomers());
System.out.println("test");
for (Customer customer : allcustomers) {
System.out.println(customer.getCustomerorder());
}
}
}
任何帮助都将不胜感激,谢谢。
更多代码
public void submitorder(ActionEvent actionEvent) throws IOException {
// 创建一个新的唯一顾客以存储该顾客的菜单项目
Customer cust = new Customer();
// 向顾客添加项目
cust.getCustomerorder().addAll(order);
// 将顾客订单添加到 table 类
tbl.getCustomers().add(cust);
System.out.println(tbl.getCustomers());
// 清除菜单选择屏幕
lvOrder.getItems().clear();
// 一旦添加了所需数量的顾客,就进入下一个屏幕
// 由于在检查发生后将顾客放入 ArrayList 中,因此会添加额外的顾客。
if (tbl.getCustomers().size() == noOfDiners) {
Window mainWindow = btnSubmitOrder.getScene().getWindow();
Parent newRoot = FXMLLoader.load(getClass().getResource("payment_screen.fxml"));
mainWindow.getScene().setRoot(newRoot);
}
}
所以顾客添加了订单内容,然后将顾客添加到 table 类中。
英文:
Hi im trying to display customer orders that are added to a 'table' class from another class
public class PaymentScreenController {
public ArrayList<Customer> allcustomers; // Defining allcustomers Arraylist
public Table tbl; // Creating instance of Table class
@FXML
public void initialize() {
allcustomers = tbl.getCustomers(); // Error seems to come from here when i assign allcustomers to the getcustomers method of table
System.out.println(tbl.getCustomers());
System.out.println("test");
for (Customer customer : allcustomers) {
System.out.println(customer.getCustomerorder());
}
}
}
any help would be appreciated thanks
** More code*
public void submitorder(ActionEvent actionEvent) throws IOException {
//create a new UNIQUE customer to store that customers menu items
Customer cust = new Customer();
//add items to customer
cust.getCustomerorder().addAll(order);
// Adds the customer order to the table class
tbl.getCustomers().add(cust);
System.out.println(tbl.getCustomers());
//clear menu choices screen
lvOrder.getItems().clear();
// Once added the desired number of customers move to next screen
//extra customer was being added as a customer was put into the ArrayLust after the check happened.
if (tbl.getCustomers().size() == noOfDiners) {
Window mainWindow = btnSubmitOrder.getScene().getWindow();
Parent newRoot = FXMLLoader.load(getClass().getResource("payment_screen.fxml"));
mainWindow.getScene().setRoot(newRoot);
}
}
So the customer adds stuff to their order, and then the customer is added to the table class
答案1
得分: 1
如果在您评论中提到的那一行出现了NPE(NullPointerException)错误,这意味着当调用方法initialize()
时,变量tbl
未被实例化并且保持了null
值。
当您调用tbl.getCustomers()
时会导致NullPointerException,因为此处tbl
为空。
我没有看到任何代码创建了Table对象并将其赋值给变量。也许这在该类之外的某个地方发生,因为您的变量具有public
修饰符,那么请确保此代码在initialize
方法之前被调用。
您需要创建一个Table
对象,例如:
public Table tbl = new Table(..);
为了得到更详细的答案,请在这里分享您的堆栈跟踪(Stack Trace)。
英文:
If an NPE raise at the line that you have mentioned in your comment, that means,
when the method initialize()
is called, variable tbl
is not instantiated and hold null
value.
And when you call tbl.getCustomers()
it causes NullPointerException, since tbl
is null here.
I don't see any code, that creates the object of Table and assigns it to the variable. Maybe it happens somewhere outside this class since your variable has public
modifier, then please, make sure that this code called earlier than the initialize
method.
You need to create an object of Table
, like:
public Table tbl = new Table(..);
For the more, specific answer, please, share your Stack Trace here.
答案2
得分: 0
public Table tbl; // 创建 Table 类的实例
在这里,你只是声明了一个 Table 变量,而没有创建它的实例。
要实现这一点,你需要执行 `tbl = new Table(在这里插入参数);`
这就是为什么你会得到空指针错误。
英文:
public Table tbl; // Creating instance of Table class
Here, you just declared your Table and not create an instance of it.
To do that you must do tbl = new Table(insert arguments here);
That's why you have a null pointer
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论