有没有办法设置一个整数范围?当超出某个整数范围时,不同的整数将增加1

时间:2019-05-01 12:24:48

标签: java

建立一个具有英制重量(石头,磅和盎司)的程序,我需要磅和盎司的范围(即0-15盎司),一旦盎司int超过15,则磅将增加1 ,磅的变化也相同,因此石头的增量为1。

我对Java还是很陌生,所以这对我来说是新手,我也不知道如何开始使用它。

public class NewWeight {

    private int stones = 0;
    private int pounds = 0;
    private int ounces = 0;

    public NewWeight (int stones, int pounds, int ounces) {
        ...


假设输入18盎司,则输出为1 pound and 2 ounces,另一个示例为224盎司,因此输出最终为1 stone, 0 pounds, 0 ounces

1 个答案:

答案 0 :(得分:3)

您不必在此处使用3个变量ouncespoundsstones。所有这三个代表一个数量-重量。

您可以仅以盎司为单位存储重量,而没有其他内容:

private int weightInOunces;

然后,您可以添加诸如getPoundsgetStonesgetOunces等在weightInOunces上进行数学运算的方法。

例如:

public int getPounds() {
    return weightInOunces % 224 / 16;
}

public int getOunces() {
    return weightInOunces % 16;
}

public int getStones() {
    return weightInOunces / 224;
}

设置者可以这样实现:

public int setPounds(int pounds) {
    int stones = getStones();
    weightInOunces = stones * 244 + getOunces() + pounds * 16;
}

public int setOunces(int ounces) {
    int pounds = getPounds();
    weightInOunces = pounds * 16 + ounces;
}

public int setStones(int stones) {
    weightInOunces = stones * 244 + weightInOunces % 244;
}

构造函数可以这样实现:

public Weight(int stones, int pounds, int ounces) {
    weightInOunces = stones * 224 + pounds * 16 + ounces;
}

要获得输出,您还可以添加一个toString方法,以x stones, x pounds, x ounces格式输出权重。