#java #algorithm
#java #алгоритм
Вопрос:
Я ищу способ передать значение и получить из него 3 значения. Это означает, что если я передам значение 0, вывод будет 0 1 2. Таким образом, это фактическое значение, переданное плюс следующие 2 последовательных числа.
Но дело не только в последовательных числах. Например, если я передаю 1, я НЕ ожидаю 1 2 3. Вместо этого это должно быть следующим.
-
0
передано в so print0 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. При этом исключение не требуется.