gpt4 book ai didi

java - 尝试创建汽车对象数组,结果为 null

转载 作者:行者123 更新时间:2023-12-01 18:40:30 25 4
gpt4 key购买 nike

我的程序允许用户更改汽车的品牌。我想制作 2 辆车的阵列。我使用 Car[] Driving = new Car[2] 声明一个数组。然后在构造函数中创建它们的对象 drive[0] = new Car()drive[1] = new Car()。我不确定这是否是执行此操作的正确方法,因为运行我的程序会给我一个 NullPointerException。

驱动程序类别:

import java.util.Scanner;

public class Driver
{
static Scanner sc = new Scanner(System.in);
static int choice;
static Car[] driving = new Car[2];
public Driver(){
driving[0] = new Car();
driving[1] = new Car();
}
public static void main(String args[]){
changeSettings();
}
static public void changeSettings(){

System.out.println("Enter the make");
driving[0].setMake(sc.nextLine());
System.out.println("Done.");
}
}

汽车类别:

public class Car
{
private String make;

public Car(){
make = "Mercedes";
}

public String getMake(){
return make;
}

public void setMake(String make){
this.make = make;
}
}

错误消息:

java.lang.NullPointerException
at Driver.changeSettings(Driver.java:23)
at Driver.main(Driver.java:18)

看起来错误出现在第 18 行和第 23 行,但我想不出解决方案。我的方法使汽车对象可以接受吗?

最佳答案

您正在调用changeSettings方法,而没有调用Driver构造函数。但您的主要问题来自于您在执行此操作时混合静态和非静态代码。

  • 删除除 main 方法之外的所有静态方法和字段。
  • 在 main 中创建一个 Driver 实例并将其分配给一个名为 driver 的变量。
  • 再次使 `changeSettings 成为一个实例(非静态方法)。
  • 然后在 main 中对驱动程序变量调用驱动程序的非静态 changeSettings 方法。

例如:

import java.util.Scanner;

public class Driver
{
// static Scanner sc = new Scanner(System.in);
// static int choice;
// static Car[] driving = new Car[2];
private Car[] driving = new Car[2];

public Driver(){
driving[0] = new Car();
driving[1] = new Car();
}

public static void main(String args[]){
Driver driver = new Driver();
driver.changeSettings();
}

public void changeSettings(){
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the make");
driving[0].setMake(sc.nextLine());
System.out.println("Done.");
}
}

关于java - 尝试创建汽车对象数组,结果为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20087178/

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