在线评分说我的输出值不正确但我不明白为什么?

时间:2014-11-24 19:00:25

标签: java

我正在为我的java编程类做一些功课,但这段代码给我带来了麻烦。对它进行评级的在线程序说我的输出存在问题,但我真的不明白为什么。有人可以帮忙吗?

作业:

编写一个名为Car的类,其中包含以下字段:

  • yearModel:yearModel字段是一个包含汽车年份模型的int。
  • make:make字段是一个String对象,用于保存汽车的品牌。
  • 速度:速度字段是一个保持汽车当前速度的int。

此外,该课程应具备以下方法:

  • 构造函数:构造函数应该接受汽车的年份模型并作为参数。 应将这些值分配给对象的yearModel和make字段。该 构造函数也应该为速度字段赋值。
  • 访问者:应该实现适当的访问器方法来访问值 存储在对象的yearModel,make和speed字段中。
  • 加速:加速方法在调用时应在速度字段中加5。
  • 制动:每次调用时,制动方法应从速度字段中减去5。

在包含Car对象的程序中演示该类,然后调用 加速方法五次。每次调用加速方法后,获取当前值 汽车的速度,并在一个单独的线上打印。然后,调用制动方法五次, 每次在单独的线路上打印当前的车速。

我的代码:

public class Car {
    private int yearModel;
    private String make;
    private int speed;

    public Car(int model, String m) {
        yearModel = model;
        make = m;
        speed = 0;
    }

    public int getYearModel() {
        return yearModel;
    }

    public String getMake() {
        return make;
    }

    public int getSpeed() {
        return speed;
    }

    public int accelerate() {
        speed += 5;
        return speed;
    }

    public int brake(int b) {
        b -= 5;
        return b;
    }
}

class CarDemo {
    public static void main(String[] args) {
        Car c = new Car(1992, "Mustang");
        int s = 0;
        s = c.getSpeed();

        for(int i = 0; i < 5; i++) {
            System.out.println("The " + c.getYearModel() + " " + c.getMake() + "is going: " + s);

            s = c.accelerate();

            System.out.println("Now the " + c.getYearModel() + " " + c.getMake() + "is going: " + s);
        }
    }
}

编辑:

根据以下建议,我已将我的代码编辑为以下内容;但是,系统仍然说我的输出不正确。

public class Car{
    private int yearModel;
    private String make;
    private int speed;
    public Car(int y, String m){
        yearModel = y;
        make = m;
        speed = 0;
    }
    public int getYearModel(){
        return yearModel;
    }
    public String getMake(){
        return make;
    }
    public int getSpeed(){
        return speed;
    }
    public void accelerate(){
        speed += 5;
    }
    public void brake(){
        speed -= 5;
    }
}
class CarDemo{
    public static void main(String[] args){
        Car theCar = new Car(2010, "Porsch");

        for(int i = 0; i < 5; i++){
            theCar.accelerate();
            System.out.println(theCar.getSpeed());
        }

        for(int count = 0; count < 5; count++){
            theCar.brake();
            System.out.println(theCar.getSpeed());
        }
    }
}   

6 个答案:

答案 0 :(得分:1)

制动你需要做速度 - = 5,而不是b - = 5.此外我不认为制动方法需要输入参数。

另外你加速5次但从不刹车

答案 1 :(得分:1)

遵循规范。

规范说:

  
      
  • 加速:加速方法在调用时应在速度字段中加5。
  •   
  • 制动:每次调用时,制动方法应从速度字段中减去5。
  •   

这两种方法没有返回类型没有参数

所以,他们应该是:

public void accelerate() {
    speed += 5;
}

// brake should not take an argument
public void brake() {
    // this should be speed, not b
    speed -= 5;
}

此外,您的演示应遵循规范(在评论中):

class CarDemo {
    public static void main(String[] args) {
        //Demonstrate the class in a program that contains a Car object 
        Car c = new Car(1992, "Mustang");

        for (int i = 0; i < 5; i++) {
            //and then calls the accelerate method five times. 
            c.accelerate();

            //After each call to the accelerate method, get the current speed of the car and print it on a separate line. 
            System.out.println(c.getSpeed());
        }

        for (int i = 0; i < 5; i++) {
            //Then, call the brake method five times,
            c.brake();

            //each time printing the current speed of the car on a separate line.
            System.out.println(c.getSpeed());
        }
    }
}

当处理为您的作业提供的精心编写的明确规范时,执行上述操作非常有帮助 - 将规范包含在注释中并填写周围的代码。

答案 2 :(得分:1)

您的主要问题是brake方法。要求声明应从当前速度中减去5。所以,你应该像你的accelerate方法一样,但减去5而不是添加。它不应该接受参数。

此外,我不知道这是否会导致问题,但根据要求,您的acceleratebrake方法不应该返回速度。将其返回类型更改为void,并删除返回语句。

最后,您测试main并不完全符合要求的要求。仔细阅读,看看它应该做什么,并完全按照它说的做。

答案 3 :(得分:0)

您要打印The " + c.getYearModel() + " " + c.getMake() + "is going: " + s 5次。你应该把它放在循环之外,这样它只打印一次。

恕我直言,我认为你不需要从accele()函数返回速度。我建议使用void函数并使用getSpeed()方法而不是分配给中间变量。

答案 4 :(得分:0)

我目前正在参加Prog Fund I&II课程。如果您使用的是Pearson,则此应该帮助。我第一次有正确的答案。您只需要按照正确的顺序正确格式化它即可。

import java.util.Scanner;

公共类车 {     private int yearModel; //持有汽车的年份模型     私有String make; //拥有汽车的品牌     私有int速度; //保持汽车的当前速度

public static void main(String[] args)
{
    // Creates car object
    Car vehicle = new Car(2018, "Barbie Mobile");

    // Creates object for user input
    Scanner keyboard = new Scanner(System.in);

    // Holds the speed of the car
    int speed = 0;

    // Calls accelerate 5 times
    vehicle.accelerate();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.accelerate();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.accelerate();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.accelerate();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.accelerate();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    // Calls break 5 times
    vehicle.brake();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.brake();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.brake();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.brake();
    speed = vehicle.getSpeed();
    System.out.println(speed);

    vehicle.brake();
    speed = vehicle.getSpeed();
    System.out.println(speed);

}



public Car(int year, String maker)
{
    // Assigns values to car's year model and make
    yearModel = year;
    make = maker;

    // Assigns 0 to the speed field
    speed = 0;
}

/* @return gets year model */
public int getYearModel() 
{
    return yearModel;
}


/* @return The speed */
public int getSpeed()
{
    return speed;
}

/* @return Gets the making of car */
public String getMake()
{
    return make;
}

/* Adds 5 to speed when called */
public void accelerate()
{
    speed += 5;
}

/* Subtracts 5 from speed when called */
public void brake()
{
    speed -= 5;
}

}

答案 5 :(得分:0)

我现在正在使用Pearson Revel参加同一堂课。如果还有其他人遇到此问题,这应该会有所帮助。扰流板警报,我将在下面发布问题的答案

Pearson Revel令人难以忍受,他们做了可怕的工作,描述了他们如何希望程序的结构和输出显示出来,并且即使有一个空格或类似的地方出现问题,您也会失去所有分数。就是说,该问题表明在“示例运行”下以java Car的形式调用了该程序。因此,听起来好像创建Car对象并调用其所有方法的主程序在同一个类中(在文本编辑器中对其进行测试,您会发现,如果在Car类下创建一个单独的类并调用Car命令行中的.java,它将引发错误;指出Car类没有main。因此,可以肯定地说,您需要在Car类内部创建main方法(希望他们只是说,对吗?)。

这是我的评分及及格答案。

public class Car {

    private int yearModel;
    private String make;
    private int speed;

    public Car(int year, String make) {
        this.yearModel = year;
        this.make = make;
        this.speed = 0;
    }

    public void brake() {
        this.speed -= 5;
    }

    public void accelerate() {
        this.speed += 5;
    }

    public int getSpeed() {
        return this.speed;
    }

    public String getMake() {
        return this.make;
    }

    public int getYearModel() {
        return this.yearModel;
    }

    public static void main(String[] args) {
        Car myCar = new Car(2019, "Tacoma");

        for (int i=0;i < 5;i++) {
            myCar.accelerate();
            System.out.println(myCar.getSpeed());
        }

        for (int i=0;i < 5;i++) {
            myCar.brake();
            System.out.println(myCar.getSpeed());
        }
    }
}

这是Revel在完成后的建议答案

public class Car {
    public static void main(String[] args) {
        Car batmobile = new Car(1965, "Bat Mobile");

        for(int i=0; i<5; i++){
            batmobile.accelerate();
            System.out.println(batmobile.getSpeed());
        }

        for(int i=0; i<5; i++){
            batmobile.brake();
            System.out.println(batmobile.getSpeed());
        }
    }

    private int yearModel;
    private String make;
    private int speed;

    public Car(int yearModel, String make){
        this.yearModel = yearModel;
        this.make = make;
        this.speed = 0;
    }

    public int getYearModel(){
        return this.yearModel;
    }

    public String getMake(){
        return this.make;
    }

    public int getSpeed(){
        return this.speed;
    }

    public void accelerate(){
        this.speed += 5;
    }

    public void brake(){
        this.speed -= 5;
    }
}