【问题标题】:Error: 'void' type not allowed here [duplicate]错误:此处不允许使用“void”类型
【发布时间】:2015-01-18 22:12:18
【问题描述】:

我正在学习使用课程,我的部分任务是制作这个 Car 课程。我在第 6 行遇到错误,我尝试打印类中方法的结果。我认为这意味着我正在尝试打印一些不存在的东西,我怀疑这是里程方法。我尝试将其更改为返回里程,但这也不起作用。有什么想法吗?

public class TestCar {
  public static final void main(String args[]) {

    Car c = new Car ();
    c.moveForward(4);
    System.out.println ("The car went" + c.mileage() + "miles."); // <-- L6
  }
}

class Car {
  public int miles = 2000;
  public void moveForward(int mf) {
    if (miles != 2000) {
        miles += mf;
    }
  }

  public void mileage() {
    System.out.print(miles);
  }
}

【问题讨论】:

  • 那辆车没有前进。)

标签: java syntax void return-type


【解决方案1】:

错误消息准确地告诉您出了什么问题——您正试图从不返回结果的方法中提取结果。

相反,让mileage() 方法返回一个字符串,而不是打印出一个字符串。

public String mileage() {
    return String.valueOf(miles);
}

我自己,我会把它变成一个 getter 方法,而是这样做:

public int getMiles() {
    return miles;
}

【讨论】:

  • 还有很多关于访问器方法的错误,field hiding
  • mileage 没问题,但它可以返回一个 int。无需转换为字符串。
【解决方案2】:

Car.mileage() 是无效的,即不返回任何内容。它需要返回一些东西,比如:

public int mileage() {
    return miles;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多