2016-10-15 2 views
1

Communauté Hey StackOverflow. J'ai un problème avec mes devoirs et je ne m'attends donc pas à ce que vous les résolviez littéralement pour moi, mais je me bats avec cette question depuis 5 jours maintenant et je ne vois pas vraiment ce que je suis mal faire. Nous sommes censés ajouter tous les nombres entre le début et la fin et diviser cette somme par un diviseur donné, si le résultat de cette division est 0, le programme devrait donner vrai, sinon faux en utilisant System.out.println().Ajouter des nombres entre le début et la fin et trouver le reste de la division de la somme

Je sais que c'est un problème très simple mais c'est ma deuxième semaine donc je ne suis pas encore familier avec toutes les fonctions de Java. C'est ce que j'ai eu mais ça ne me donne aucune réponse. J'apprécierais si vous pourriez peut-être indiquer où je me suis trompé. Merci les gars d'avance!

public class EX6 { 

public static void main(String[]args) { 
    { 
    } 
    int divisor = 14; 
    int start = 42; 
    int end = 678; 
    int sum = 0; 
    int i; 
    i= 42; 
    while (i<=end) sum= start +start++; i++; 
    if (sum % divisor == 0) {System.out.println(true); 
    } else{ 
    System.out.println(false); 
} }} 

Répondre

1

D'abord, au lieu de sum = start + start++ Je pense que vous voulez sum = sum + start++. Vous voulez ajouter à un total cumulé, non défini sum égal à start + start + 1.

Ensuite, println doit être passé une chaîne ("true", pas true).

En outre, ce n'est pas exactement un bogue mais il n'y a pas besoin de la variable i. Si vous y réfléchissez, i est toujours égal à start, donc vous pouvez simplement référencer start au lieu de i.

public class EX6 { 

    public static void main(String[]args) { 
     int divisor = 14; 
     int start = 42; 
     int end = 678; 
     int sum = 0; 

     while (start <= end) { 
      sum = sum + start++; 
     } 

     if (sum % divisor == 0) { 
      System.out.println("true"); 
     } else{ 
      System.out.println("false"); 
     } 
    } 
} 

Une petite note sur votre code d'origine: il est toujours bon de mettre un support autour du code que vous voulez exécuter dans une boucle. Par exemple, dans votre code, while (i<=end) sum= start +start++; i++;, le i++ ne fait pas partie de la boucle car il n'y a pas de parenthèses. Donc, le problème va probablement durer éternellement. Pour corriger cette déclaration que vous utilisez simplement:

while (condition) { 
    //statement 1 
    //statement 2 
    //statement 3 
} 
0

Voici ce que vous devez faire:

int divisor = 14; 
int start = 42; 
int end = 678; 
int sum = 0; 
int i; 
while (start<=end){ 
sum+=start; 
start = start++; 
} 
if (sum % divisor == 0) { 
    System.out.println(true); 
} else{ 
    System.out.println(false); 
} 
+0

Ceci est faux. Il définit sum = start + start à chaque itération de la boucle. Donc, à la fin, la somme sera juste 678 + 678. Pas la bonne réponse. – nhouser9

+0

Excuses, Mon erreur de faute de frappe ... Je vais le changer à Sum + = start; –