我正在为我的java编程类做一些功课,但这段代码给我带来了麻烦。对它进行评级的在线程序说我的输出存在问题,但我真的不明白为什么。有人可以帮忙吗?
编写一个名为Car的类,其中包含以下字段:
此外,该课程应具备以下方法:
在包含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());
}
}
}
答案 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而不是添加。它不应该接受参数。
此外,我不知道这是否会导致问题,但根据要求,您的accelerate
和brake
方法不应该返回速度。将其返回类型更改为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());
}
}
}
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;
}
}