2017-03-11 2 views
-1

Ich habe versucht, dies hier zu suchen und habe immer noch nicht die genaue Lösung, die ich suche. Die Mathematik kommt immer wieder falsch raus.Durchschnittliche Zahlen kommen incorrect

 //Local Constants 
     int count = 0;   //Used to track the number of grades entered by the user 

     //Local Variables 
     double currentGrade = 0; //User's current grade inputed 
     double numberGrades;  //Total number of grades to be entered 
     double totalGrade = 0;  //Total of all grades 
     double gradeAverage;  //Average of all grades 

     //Main Function 
     //Ask the user for the amount of grades they would like to enter 
     System.out.print ("How many grades would you like to enter? "); 
     numberGrades = scan.nextInt(); 

     //If the user asks to enter 0 numbers, output an error 
     while (numberGrades <= 0){ 
      System.out.print ("Please enter a valid number! "); 
     numberGrades = scan.nextInt(); 
     } 
     //Add the grades together as they are input by the user 
     while (count < numberGrades){ 
      totalGrade += currentGrade; 
      System.out.print ("Please enter your next grade: "); 
      currentGrade = scan.nextInt(); 
     count++; 
     } 
     //Calculate and output the average to the user 
     gradeAverage = (totalGrade/numberGrades); 
     System.out.print ("\n"); 
     System.out.print ("The average of all grades is: " + gradeAverage); 
    } 

}

Gedanke dieses Problem behoben wurde, aber wenn ich es betreibe ich bin immer noch das gleiche Problem bekommen. Das Beispiel, das ich versuchte, war, 3 Zahlen einzugeben, jedes war 50. Der Durchschnitt endete, 33.0 zu sein. Ich habe den Debugger ausgeführt und es gibt mir Fehler, wenn die erste Nummer eingegeben wird. count, totalGrade und currentGrade werden alle als Fehler angezeigt. Keine Ahnung wie man es reparieren kann.

+1

Willkommen bei Stack-Überlauf! Es sieht so aus, als müssten Sie lernen, einen Debugger zu verwenden. Bitte helfen Sie sich selbst [https://ericlippert.com/2014/03/05/how-to-debug-small-programs/]. Wenn Sie danach noch Probleme haben, können Sie gerne weitere Einzelheiten erfahren. –

+0

Debuggen Sie einfach Ihren Code, dann werden Sie vielleicht bemerken, warum sich Ihr Programm nicht wirklich um Ihre letzte Eingabe kümmert. – Tom

+0

@JoeBurkhart zwei Dinge: 1) Sie verpassen eine der Noten (die letzte); 2) Sie verwenden Ganzzahldivision. –

Antwort

0

Sie machen die Summe, bevor Sie die Eingabe erhalten. Sie sollten es danach tun.

Ersetzen Sie Ihre while Schleife mit folgenden Änderung:

 while (count < numberGrades){ 

      System.out.print ("Please enter your next grade: "); 
      currentGrade = scan.nextInt(); 
      totalGrade += currentGrade; 
     count++; 
     } 
+0

Wow. Vielen Dank. Es ist beschissen, wenn es so einfach ist, dass ich es einfach übersehen habe, nachdem ich stundenlang auf den Code gestarrt habe, um alles andere zu bewegen. –

Verwandte Themen