自行车java程序设置有问题吗

自行车java程序设置有问题吗,java,Java,我的任务是创建一个程序,在给定档位(1-3)和cadence(1-100)的情况下,给出自行车的英里/小时 1档MPH=cadence/12 2档MPH=cadence/6 3档MPH=cadence/4 我们已经设置了一个类,需要运行一个测试程序。以下是我到目前为止所做的,我只是对在何处使用用户输入运行循环结构以及返回语句应该在何处感到困惑: public class Bicycle { private int bike; private int gear = 1;

我的任务是创建一个程序,在给定
档位(1-3)
cadence(1-100)
的情况下,给出自行车的英里/小时

  • 1档MPH=cadence/12
  • 2档MPH=cadence/6
  • 3档MPH=cadence/4
我们已经设置了一个类,需要运行一个测试程序。以下是我到目前为止所做的,我只是对在何处使用用户输入运行循环结构以及返回语句应该在何处感到困惑:

public class Bicycle
{
    private int bike;
    private int gear = 1;
    private int cadence = 1;
    private int speed = 1;

    public void changeGear(int getGear)
    {

        gear = getGear;
    }

    public void changeCadence(int getCadence)
    {
        cadence = getCadence;
    }

    public void MPH(int getMPH)
    {
        speed = getMPH;
    }
}
这是我的测试:

import java.util.Scanner;

public class BicycleTest
{
    public static void main(String[] args)
    {
        Bicycle bike;
        bike = new Bicycle();
    }
}

首先,要
set
get
实例的属性,请使用命名约定(
getStuff
setStuff
)。然后,
速度
不是您自行车的属性,它会发生变化并取决于其他属性,同样在设置新值时,检查它是否在您要求的范围内

要获得速度,只需检查
档位
,并返回良好结果:

public class Bicycle {

    private int bike;
    private int gear;
    private int cadence;

    public int getGear() {
        return gear;
    }    
    public void setGear(int gear) {
        if (gear >= 1 && gear <= 3) {
            this.gear = gear;
        }
    }

    public int getCadence() {
        return cadence;
    }
    public void setCadence(int cadence) {
        if (cadence >= 1 && cadence <= 100) {
            this.cadence = cadence;
        }
    }

    public double getSpeed() {
        if (gear == 1) {
            return cadence / 12.0;
        } else if (gear == 2) {
            return cadence / 6.0;
        } else if(gear == 3{
            return cadence / 4.0;
        }else{
            return 0;
        }
    }
}

您的逻辑应该放在main方法中,或者直接放在main()中调用的方法中。Bicycle是Bike对象的一种表示,您不应该将应用程序逻辑放在这种类型的类中。谢谢您,Andrew。到目前为止,你认为我走的路对吗?对不起,soconnell80,今天回家了,但谢谢你进一步解释。我确实有一个后续问题…什么是“Integer.parseInt(sc.nextLine)?我还没有看到。@soconnell80我个人总是使用
Integer.parseInt(sc.nextLine())
而不是
sc.nextLine()
为确保避免返回行字符出现问题,它只需读取键入的行并将其转换为
int
好的,这是否连接到用户输入?再次,我为不理解而道歉。这是使用import java.util.Scanner的另一种方法吗?@soconnell80您应该阅读有关询问用户输入的内容,System.in是键盘d、 扫描仪用来听输入:谢谢!我感谢你们的帮助!这对我来说很有意义!
public static void main(String[] args) {
    Bicycle bike = new Bicycle();
    Scanner sc = new Scanner(System.in);

    System.out.println("Give the gear :");
    bike.setGear(Integer.parseInt(sc.nextLine()));

    System.out.println("Give the cadence :");
    bike.setCadence(Integer.parseInt(sc.nextLine()));

    double speed = bike.getSpeed();
    System.out.println(speed);
}