我无法弄清楚为什么我所做的课程不起作用

时间:2014-11-26 04:52:07

标签: java

我刚开始使用对象和类,当我尝试通过.method事物在类中使用方法时,我得到语法错误。我使用了几乎相同的格式来解决以前的练习问题,并且工作正常,所以我在这里画一个空白。

这是对象的类。

public class Automobile {
    public double mpg;
    public double gallons = 0;

    public Automobile(double mpg) {
        this.mpg = mpg;
    }

    public void fill(double f) {
        gallons += f;
    }

    public void takeTrip(double m) {
        gallons = gallons - (1 / (mpg / m));
    }

    public void reportFuel() {
        System.out.println(gallons);
    }
}

这是测试者类

public class Tester {
Automobile myBmw = new Automobile(24);
 myBmw.fill(20);
 myBmw.takeTrip(100);
 myBmw.reportFuel();
}

6 个答案:

答案 0 :(得分:3)

根据java语法,您不能编写如下所述的可执行语句:

 myBmw.fill(20);
 myBmw.takeTrip(100);
 myBmw.reportFuel();

out of methods / constructors / blocks。您需要根据您的要求将代码移动到适当的位置。

答案 1 :(得分:0)

Tester类正在尝试在有效执行上下文之外执行代码(即methodstatic块... ...

public class Tester {
    Automobile myBmw = new Automobile(24);
    public Tester() {
        myBmw.fill(20);
        myBmw.takeTrip(100);
        myBmw.reportFuel();
    }
}

例如......

答案 2 :(得分:0)

你不能在这样的课堂上这样做。您必须从方法/块中调用其他类方法。

public class Tester {
  Automobile myBmw = new Automobile(24);
  public Tester(){  // It may be any other function 

    myBmw.fill(20);
    myBmw.takeTrip(100);
    myBmw.reportFuel();
  }

  // OR if you miss the main()
  public static void main(String args[]){
    Automobile myBmw = new Automobile(24); 
    myBmw.fill(20);
    myBmw.takeTrip(100);
    myBmw.reportFuel();
  }
}

答案 3 :(得分:0)

更改块

public class Tester {
Automobile myBmw = new Automobile(24);
 myBmw.fill(20);
 myBmw.takeTrip(100);
 myBmw.reportFuel();
}

public class Tester {
Automobile myBmw = new Automobile(24);
public Tester(){
 myBmw.fill(20);
 myBmw.takeTrip(100);
 myBmw.reportFuel();
}
}

或将其置于Tester类或静态{}块中的另一个方法中(您还需要将Automobile实例声明为静态)

答案 4 :(得分:0)

你应该使用主类,我已经执行你的代码,并且当我们使用主类

时它运行正常
public class Tester {
public static void main(String[] args) {
    Automobile myBmw = new Automobile(24);
     myBmw.fill(20);
     myBmw.takeTrip(100);
     myBmw.reportFuel();
}
}

如果你不想使用main(),那么你应该使用它的方法

public void testME() {
        Automobile myBmw = new Automobile(24);
        myBmw.fill(20.0);
        myBmw.takeTrip(100);
        myBmw.reportFuel();
    }

答案 5 :(得分:0)

您没有在测试人员类中提供main方法,以免出错。

public class Tester {
public static void main(String args[]){ // main method required.
Automobile myBmw = new Automobile(24);
 myBmw.fill(20);
 myBmw.takeTrip(100);
 myBmw.reportFuel();
}
}