Alterner l'ajout et la soustraction d'un nombre java


Voici mon code actuel:

Scanner input = new Scanner(System.in);
int n, sum = 0;
System.out.println("Enter n:");
n = input.nextInt();
for (int i = 1; i <= n; i++) {
    if (i % 2 == 0){
        sum-=input.nextInt();
    } else {
        sum+=input.nextInt();
    }
}
System.out.println("The total sum is:"+sum);

Quelqu'un peut-il aider à ajouter alternativement et moins un entier?

Par exemple, si j'entre n: = 5 et demande à l'utilisateur d'entrer 4, 14, 5, 6, 1 alors il calculera comme 4 + 14 - 5 + 6 - 1

Author: Alex Shesterov, 2016-10-09

3 answers

Vous y étiez presque:

for (int i = 1; i <= n; i++) {
    if (i > 2 && i % 2 != 0){
        sum-=input.nextInt();
    } else {
        sum+=input.nextInt();
    }
}

Les deux premiers nombres contribuent au résultat avec le signe "plus", leur signe n'alterne pas, d'où la condition supplémentaire i > 2.


Note latérale: Je suggère de renommer sum en result et de changer le texte de sortie en quelque chose comme System.out.println("The result is:"+result);. La raison en est que ce n'est pas la somme en cours de calcul, le nom sum est un peu déroutant.

 3
Author: Alex Shesterov, 2016-10-09 17:08:41
int result = 0;
for (int  i = 1; i <= n; i++) {
    int num = input.nextInt();
    result += (i == 1 || i % 2 == 0) ? num : -num;
}
 1
Author: patro15, 2016-10-09 19:07:52
int result = 0, n, i = 2;
result = input.nextInt(); // initialise result with first value
boolean add = true;
while(i <= n){
     int num = input.nextInt();
     if(add){
        result += num;
     }else{
        result -= num;
     }
     add = !add // flip the value of boolean flag
     i++;
}

OU:

int result = 0, n, i = 2;
result = input.nextInt(); // initialise result with first value
boolean add = true;
while(i <= n){
     int num = input.nextInt();
     if(!add){
        num *= -1;
     }
     result += num;
     add = !add // flip the value of boolean flag
     i++;
}

Edit: Plutôt que d'ajouter deux premières valeurs, initialisez le résultat avec la première valeur, puis alternez add flag. Pas besoin de se soucier de i's valeur

 0
Author: Ankit Deshpande, 2016-10-09 19:21:07