首页 > 解决方案 > 根据传入的值获取连续值

问题描述

我正在寻找一种方法来传递一个值并从中获取 3 个值。这意味着如果我传入值 0,则打印输出将为 0 1 2。因此,这是传入的实际值加上接下来的 2 个连续数字。

但这不仅仅是关于连续数字。例如,如果我传入 1,我并不期待 1 2 3。相反,它应该如下所示。

以下代码按预期工作,但以这种方式写出来有点愚蠢,而且传入的值是由外部因素决定的,我事先不会知道。

但是如果传入的值是示例 3,算法应该计算出

已通过 3 的 3 倍数(索引 0 - 8)。

因此,传入 3 将意味着打印 9、10、11。

以下代码执行上述说明。但不可扩展因此寻找某种循环算法。

class App {

    public static void main(String[] args) {

        App app = new App();
        app.printIndex(0); // idea is to print the index being passed in and the next 2 numbers, so 0 1 2
        app.printIndex(1); // 3 4 5
        app.printIndex(2); // 6 7 8
        app.printIndex(3); // 9 10 11
    }

    int getIndex(int i) {
        if(i == 0) return i;

        if(i == 1) return 3;

        if(i == 2) return 6;

        if(i == 3) return 9;

        return 0;
    }

    void printIndex(int i) {

        System.out.println(getIndex(i));
        System.out.println(getIndex(i) + 1);
        System.out.println(getIndex(i) + 2);
    }
}

标签: javaalgorithm

解决方案


int getIndex(int i) {
    return i*3;
}

您的 getIndex 方法只需返回 i*3 即可获取每第三个数字。如果您只是替换它,您的程序应该可以工作。如果您将方法getIndex()编辑printIndex()

void printIndex(int i) {
    System.out.println(i*3+"");
    System.out.println(i*3 + 1);
    System.out.println(i*3 + 2);
}

推荐阅读