gpt4 book ai didi

java - 当从第二个 Java 类调用时,打印出一个 Java 类的方法

转载 作者:行者123 更新时间:2023-12-02 10:14:03 26 4
gpt4 key购买 nike

我是 JAVA 新手,正在尝试调用一个类中的方法,该方法使用另一个类中的相同方法打印出一条消息。我对java很陌生,真的很想学习。

我想要做的是从 CustomerInfo{} 类调用 getAllCustomerInfo() 方法,该方法是从 Customer 类调用的。当我尝试运行代码时出现错误:

线程“main”java.lang.Error中出现异常: Unresolved 编译问题: 无法对非静态字段 c 进行静态引用

如果我将 c 设置为静态(static Customer c = new Customer();)并尝试运行我的代码,它只会打印 getAllCustomerInfo() 方法中的逗号,而不打印 getName()、getAddress 等信息。

有什么想法吗?谢谢。

1 类:

public class Customer {
//Assume I have getters and setters and fields

//Method I want to use in another class
public String getAllCustomerInfo() {
String message =
getName() + "\n" +
getAddress() + "\n" +
getAge();

System.out.println(message);

return message;
}

} //END OF CUSTOMER CLASS

2 级:

//Class I am trying to call method from
public class CustomerInfo {
Customer c = new Customer();

public static void main(String args[]) {

//Code where I am trying to access the method from the Customer class


while (choice.equalsIgnoreCase("y")) {

System.out.print("Enter a customer number: ");
int customerNumber = sc.nextInt();

String customerInformation = sc.nextLine();

// get the Product object
Customer customer = CustomerDB.getCustomer(customerNumber);

//Check if customer exits in DB
if (customerNumber == 1) {
// display the output
System.out.println(c.getAllCustomerInfo());
} else {
System.out.println("There is no one like that in the DB.");
}

// see if the user wants to continue
System.out.print("Continue? (y/n): ");
choice = sc.nextLine();
System.out.println();
}
}

}

最佳答案

CustomerInfo 类中,c 是一个实例变量,如果没有 CustomerInfo 类的对象实例,该变量将不存在。由于您是从静态上下文引用它,因此您会收到此类错误。您必须将 c 变量设为 static 或将其移至 main 方法内。

public class CustomerInfo{
static Customer c = new Customer();
public static void main(String args[]) {
// your implementation
}
}

或者

public class CustomerInfo{
public static void main(String args[]) {
Customer c = new Customer();
// your implementation
}
}

关于java - 当从第二个 Java 类调用时,打印出一个 Java 类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54798081/

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