Получение последовательных значений на основе передаваемого значения

#java #algorithm

#java #алгоритм

Вопрос:

Я ищу способ передать значение и получить из него 3 значения. Это означает, что если я передам значение 0, вывод будет 0 1 2. Таким образом, это фактическое значение, переданное плюс следующие 2 последовательных числа.

Но дело не только в последовательных числах. Например, если я передаю 1, я НЕ ожидаю 1 2 3. Вместо этого это должно быть следующим.

  • 0 передано в so print 0 1 2 .

  • Теперь переходим 1 . 0 1 2 уже сделано с помощью вышеуказанного вызова. Таким образом, передача 1 будет напечатана 3 4 5 .

  • Теперь переходим 2 . 0 1 2 3 4 5 уже сделано с вышеуказанными вызовами. Таким образом, передача 2 приведет к выводу 6 7 8 и так далее.

Следующий код работает по назначению, но довольно глупо записывать его таким образом, плюс передаваемое значение определяется внешними факторами, и я не буду знать об этом заранее.

Но если переданное значение является примером 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);
    }
}
  

Комментарии:

1. можете ли вы просто return i*3

2. Попробуйте System.out.println(i*3 ", " (i*3 1) ", " (i*3 2))

Ответ №1:

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

ваш метод getIndex должен просто возвращать i * 3, чтобы получить каждое 3-е число. Ваша программа должна работать, если вы просто замените это. Вы могли бы даже полностью исключить getIndex() метод, если отредактируете свой printIndex() метод на

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

Комментарии:

1. Сейчас чувствую себя довольно глупо. Имеет смысл. Требуется исключение для значения 0, но в противном случае это должно сработать. Спасибо.

2. конечно, что вы подразумеваете под исключением для значения 0?

3. При этом исключение не требуется.