Je veux utiliser la boucle for pour mon problème, pas pendant. Est-il possible de faire ce qui suit?:
for(double i = 0; i < 10.0; i+0.25)
Je veux ajouter des valeurs doubles.
Pour éviter d'être mordu par des artéfacts d'arithmétique en virgule flottante, vous pouvez utiliser une variable de boucle entière et dériver la valeur en virgule flottante dont vous avez besoin dans votre boucle:
for (int n = 0; n <= 40; n++) {
double i = 0.25 * n;
// ...
}
Vous pouvez utiliser i += 0.25
au lieu.
La réponse de James a attrapé l'erreur la plus évidente. Mais il y a un problème plus subtil (et IMO plus instructif), en ce que les valeurs en virgule flottante ne doivent pas être comparées pour une (in) égalité.
Cette boucle est sujette à des problèmes, utilisez juste une valeur entière et calculez la valeur double à l'intérieur de la boucle; ou, moins élégant, donnez-vous une marge: for(double i = 0; i < 9.99; i+=0.25)
Edit: la comparaison originale fonctionne bien, car 0,25 = 1/4 est une puissance de 2. Dans tous les autres cas, il se peut qu'elle ne soit pas exactement représentable sous forme de nombre à virgule flottante. Un exemple du problème (potentiel):
for(double i = 0; i < 1.0; i += 0.1)
System.out.println(i);
imprime 11 valeurs:
0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
Dans
for (double i = 0f; i < 10.0f; i +=0.25f) {
System.out.println(i);
f indique float
L'ajout de =
indique un raccourci pour i = i + 0,25;
for(double i = 0; i < 10.0; i+=0.25) {
//...
}
L'ajout = indique un raccourci pour i = i + 0,25;
Pour un entier. Nous pouvons utiliser: for (int i = 0; i < a.length; i += 2)
for (int i = 0; i < a.length; i += 2) {
if (a[i] == a[i + 1]) {
continue;
}
num = a[i];
}
De la même manière que nous pouvons faire pour d'autres types de données également.