【问题标题】:Java: void cannot be dereferencedJava:void 不能被取消引用
【发布时间】:2022-01-17 08:37:44
【问题描述】:

我遇到了一个错误,void cannot be dereferenced 在线 System.out.println(setupCars().F123.get(0));。我想要实现的是,一旦系统检测到单词IW1,就会产生输出Volvo。我尝试使用this.setupCars().F123.get(0));,但不幸的是没有运气。

public class SpaceCars {
    ArrayList<String> F123 = new ArrayList<String>();   

    public SpaceCars(String admiral) {
       ArrayList<String> F123 = new ArrayList<String>();
       F123.add("Volvo");
       
       setupCars();
    }
    public String getCarInfo(String ref) {
        if (ref.equals("IW1")) {
            System.out.println(setupCars().F123.get(0));
        }
        
        return "\nNo such car";
    } 
    private void setupCars() {
        ArrayList<String> F123 = new ArrayList<String>();
        F123.add("Volvo");
        F123.add("Nissan");
       
    }

【问题讨论】:

  • setupCars() 不返回任何内容;它被声明为 void 方法。因此,您不能用它返回的内容打印(或做任何其他事情)。您希望打印什么?
  • @user16632363 volvo
  • 我也怀疑你不了解范围。您有两个完全不同的列表,称为 F123。 setupCars 中的那个被创建、填充和忽略。也许您希望 setupCars 将汽车添加到构造函数中创建的列表中。
  • @user16632363 是的,这就是目标

标签: java void


【解决方案1】:
System.out.println(setupCars().F123.get(0));

在这段代码中,您尝试使用 void 函数访问名为 F123ArrayList。但你不能那样做。 void 函数不返回任何内容。 Arraylist 是在函数中创建的,仅此而已。在这种情况下我们无法到达它。

您可以更改 setupCars 函数以返回 Arraylist 或让 setupCars 将项目添加到应在类而不是方法中声明的全局变量。我猜你在课堂上有一个 Arraylist。然后你应该把你的 setupCars 函数改成这样:

private void setupCars() {
    F123.add("Volvo");
    F123.add("Nissan"); 
}

getCarInfo 应该是:

public String getCarInfo(String ref) {
    if (ref.equals("IW1")) {
        setupCars();
        return F123.get(0);
    }
    
    return "\nNo such car";
}

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2017-02-10
    • 2018-03-26
    • 2023-03-31
    相关资源
    最近更新 更多