web-dev-qa-db-fra.com

Alterner entre les opérations dans une boucle for

Je suis un débutant Java, s'il vous plaît supporter avec moi. :) Je n'ai rien appris de tel que les déclarations if et je n'ai encore appris que sur les boucles, les variables et les classes. J'ai besoin d'écrire une seule boucle qui produit la sortie suivante:

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

Je peux voir dans le segment que la différence entre les nombres est réduite de un. Ainsi, de 10 à 0, il est soustrait 10, puis de 0 à 9, il est ajouté par 9 et il y a alternance entre addition et soustraction.

Mon idée était de créer la boucle où ma variable i = 10 diminue de 1 dans la boucle (i--) mais je ne suis pas tout à fait sûr comment alterner l'addition et la soustraction dans la boucle ?

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

Pourquoi ne pas avoir deux variables supplémentaires et l'incrémenter un et décrémenter l'autre:

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

Sortie:

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

Cependant, nous pouvons également le faire sans variables supplémentaires:

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

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

Cela ressemble un peu à un devoir, alors je ne vous donnerai pas de code de travail.

Mais rappelez-vous que vous pouvez insérer plusieurs instructions print dans la boucle for. Vous n'avez pas nécessairement à parcourir 10 fois pour obtenir votre sortie. 5 fois est totalement suffisant. Et comme déjà indiqué dans un commentaire ci-dessus: les nombres alternent entre i et 10-i, pour la plage droite de i.

5
Markus

Ou vous pouvez le faire de cette façon, si vous voulez être un sage;)

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
Jens Roland

remplacer i >= 0 par i >= 5

ajoutez ceci: System.out.print((10-i--) + " ");

à partir de ce que tu as fait 

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

Quelque chose n'a pas besoin d'être trop réfléchi:

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);
        }
    }
}

modifier

Vous POUVEZ et devriez généraliser votre tâche. Voici un exemple de la façon dont vous pourriez le faire (je n'écrirai pas la méthode car c'est votre travail - je modifierai plutôt ma réponse pour vous montrer les possibilités)

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);
        }
    }
}
5
zlakad

Vous devriez penser à généraliser la série. Comme vous l'avez observé, la série alterne entre l'addition et la soustraction. En outre, la différence diminue d'un point à chaque étape. Vous pouvez définir des variables pour ces deux éléments et les ajuster dans la boucle.

    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;
        }
    }
4
chandra

Qui a dit que vous ne pouvez utiliser qu'un seul System.out.print dans la boucle?

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

Il suffit de lancer une boucle à partir de 0 ou de 10.

1 . Si vous commencez à partir de 10

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

2 . Si vous partez de 0

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

La sortie sera: 10 0 9 1 8 2 7 3 6 4 5 5

1

J'ai essayé ce code. Cela a fonctionné pour moi.

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

C'est ici. La liste de sortie est une liste de combinaisons permettant de créer 10;

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);
}
0
nitrodmr