Переключение между операциями в цикле for-loop

Я начинающий Java, пожалуйста, несите меня. :) Я не узнал ничего подобного, if такие утверждения и так далее, я только узнал о циклах, переменных и классах. Мне нужно написать один цикл, который производит следующий вывод:

10 0 9 1 8 2 7 3 6 4 5 5

Из сегмента видно, что разница между числами уменьшается на единицу, поэтому от 10 до 0 вычитается 10, затем от 0 до 9 добавляется 9, и она чередуется между добавлением и вычитанием.

Моя идея состояла в том, чтобы создать цикл, в котором моя переменная i = 10 уменьшается на 1 в цикле (i--), но я не совсем уверен, как чередовать добавление и вычитание в цикле?

 public class Exercise7 {
    public static void main(String[] args) {            
        for(int i = 10; i >= 0; i--) {
            System.out.print(i + " ");
        }
    }
 }

Ответы

Ответ 1

Почему бы не иметь две дополнительные переменные и прирост один и уменьшить другую:

int y = 0;
int z = 10;
for(int i = 10; i >= 5; i--) {
      System.out.print(z + " " + y + " ");
      y++;
      z--;
}

Выход:

10 0 9 1 8 2 7 3 6 4 5 5 

Однако мы также можем сделать это без дополнительных переменных:

for(int i = 10; i >= 5; i--) {
   System.out.print(i + " " + 10-i + " ");        
}

Ответ 2

Я не думаю, что ОП на самом деле хотел, чтобы кто-то сделал для них свою домашнюю работу, поэтому я собираюсь ответить на вопрос, который они на самом деле спросили: как чередовать две операции в цикле (чтобы они могли сохранить алгоритм, с :)).

Там отличный "трюк", который очень часто используется, когда мы хотим что-то делать с каждой итерацией на большинстве языков программирования. Вы определенно встретите это в своей жизни, и это может быть озадачительно, если вы не знаете, что происходит, так что вот оно!


Оператор modulo (%) даст остаток от деления между его операндами.

Например, рассмотрим следующее: 7 ÷ 2 = 3.5

Когда вы работаете с целыми числами, вы должны сказать, что 7 ÷ 2 = 3, тогда у вас останется 1.
В этом случае, когда все переменные являются int с, в Java, 7/2 будет 3 и 7 % 2 является 1.

Это по модулю для вас!


Что интересно об этом операторе, так это то, что интересно о делении вообще, и в одном случае в частности: остаток от деления на 2 всегда равен 0 или 1... и он чередуется ! Это ключевое слово здесь.

Здесь идет "трюк" (не совсем трюк, это в основном шаблон с учетом того, насколько широко он используется) для чередующихся операций над итерациями:

  1. взять любую переменную, которая увеличивается на каждую итерацию в цикле
  2. тест для остальной части деления этой переменной на 2
  3. если он 0, сделайте что-нибудь, иначе (это будет 1), возьмите альтернативный путь!

В вашем случае, чтобы ответить на ваш фактический вопрос (хотя другие не имеют хорошие моменты, я "м не пытается отнять у кого), вы могли бы рассмотреть возможность использования что - то вроде этого:

if( i % 2 == 0 ) {
    // i is even, subtract
} else {
    // i is odd, add
}

Это позволит вам продолжать использовать алгоритм, о котором вы изначально думали!

Ответ 3

public class exercise7 {
    public static void main(String[] args) {

        for(int i = 10; i >= 5; i--) {
            System.out.print(i + " " + (10-i) + " ");
        }
    }
}

Ответ 4

Или вы можете сделать это таким образом, если вы хотите быть мудрецом;)

for(int i = 0, arr[] = {10,0,9,1,8,2,7,3,6,4,5,5}; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

Ответ 5

заменим i >= 0 при i >= 5

добавьте это: System.out.print((10-i--) + " ");

начиная с того, что вы сделали

public class Exercise7 {
      public static void main(String[] args) {        
          for(int i = 10; i >= 5; ) {
              System.out.print(i + " " + (10-i--) + " ");                 
          }
      }
 }

Ответ 6

Что-то не нужно переоценивать:

public class Answer2 {


    public static void main(String[] args) {

        for (int i = 0; i <= 5; i++){
            System.out.println(i);
            System.out.println(10 - i);
        }
    }
}

редактировать

Вы МОЖЕТЕ и должны обобщать свою задачу. Вот пример того, как вы могли это сделать (я не буду писать метод, так как это ваша работа - вместо этого я изменю свой ответ, чтобы показать вам возможности)

public class Answer2 {

    private static final Random RANDOM = new Random();

    public static void main(String[] args) {

        //You can use any upper bound for 'someLength'
        int someLength = 1 + RANDOM.nextInt(20);

        for (int i = 0; i <= someLength / 2; i++) {
            System.out.println(someLength - i);
            System.out.println(i);
        }
    }
}

Ответ 7

Это немного похоже на домашнее задание, поэтому я не буду давать вам рабочий код.

Но помните, что вы можете поместить несколько операторов печати внутри цикла for. Вам не обязательно проходить итерацию 10 раз, чтобы получить результат. 5 раз вполне достаточно. И, как уже сказано выше, цифры чередуются между я и 10-i, для правильного диапазона i.

Ответ 8

Кто сказал, что вы можете использовать только один System.out.print в цикле?

for (int i=0; i < 5; i++) {
    System.out.print((10 - i) + " " + (i + 1) + " ");
}

Ответ 9

Вы должны думать об обобщении серии. Как вы заметили, серия чередуется с добавлением и вычитанием. Кроме того, разница на каждом шаге уменьшается на единицу. Вы можете определить переменные для этих двух и отрегулировать их в цикле.

    public static void main(String[] args) {
        int term = 10;
        int sign = 1;
        for(int delta = 10; delta >= -1; delta--) {
            System.out.print(term + " ");
            sign = -1 * sign;
            term = term + sign * delta;
        }
    }

Ответ 10

Я пробовал этот код. Это сработало для меня.

for(int i = 10; i >= 5; i--) {
   System.out.print(i + " ");
   System.out.print(10-i + " ");
}

Ответ 11

Просто запустите цикл, начиная с 0 или начиная с 10.

1. Если вы начинаете с 10

for(int i=10;i>=5;i--){
   System.out.print(i + " " + (10-i) + " ");
}

2. Если вы начинаете с 0

for(int i=0;i<=5;i++){
   System.out.print((10-i) + " " + i + " ");
}

Выход будет: 10 0 9 1 8 2 7 3 6 4 5 5

Ответ 12

Это здесь. Список результатов - это список комбинаций для создания 10; 10 0 9 1 8 2 7 3 6 4 5 5

10 + 0 = 10

9 + 1 = 10

8 + 2 = 10

7 + 3 = 10

6 + 4 = 10

5 + 5 = 10

int n = 10;
int half = n / 2;
if(n % 2 == 1){
    half++;
}        
for(int x = n; x >= half;x--){
    int remainder = n % x;

    if(remainder == 0){
        remainder =  n - x;
    }
    System.out.print(x);
    System.out.print(" ");
    System.out.println(remainder);
}

Ответ 13

int d = 0;
for(int i = 10; i >= 5; i--) {
      System.out.print(i + " " + d + " ");
      d++;
}