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
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.
int result = 0;
for (int i = 1; i <= n; i++) {
int num = input.nextInt();
result += (i == 1 || i % 2 == 0) ? num : -num;
}
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