2017-10-10 7 views
-3

J'écris un programme qui calcule et affiche les scores de quilles moyens de chaque joueur de bowling que l'utilisateur entre. J'ai du mal à calculer la moyenne des 3 scores, je pense que c'est en train de calculer le total des scores. Comment puis-je faire en sorte qu'il calcule la moyenne des scoresJava Comment calculer la moyenne de 3 scores de bowling

public static void main (String [] args) 
{ 



//local constants 


    //local variables 
    String bowler = ""; 
    int total = 0; 
    int average = 0; 
    int score1 = 0; 
    int score2 = 0; 
    int score3 = 0; 

    /******************** Start main method *****************/ 

    //Enter in the name of the first bowler 
    System.out.print(setLeft(40," Input First Bowler or stop to Quit: ")); 
    bowler = Keyboard.readString(); 

    //Enter While loop if input isn't q 
    while(!bowler.equals("stop")) 
    { 

     System.out.print(setLeft(40," 1st Bowling Score:")); 
     score1 = Keyboard.readInt(); 
     System.out.print(setLeft(40," 2nd Bowling Score:")); 
     score2 = Keyboard.readInt(); 
     System.out.print(setLeft(40," 3rd Bowling Score:")); 
     score3 = Keyboard.readInt(); 
     if(score1 >= 0 && score1 <= 300 && score2 >= 0 && score2 <= 300 && score3 >= 0 && score3 <= 300) 
     { 
      total += score1; 
      total += score2; 
      total += score3; 
      System.out.println(setLeft(41,"Total: ")+ total); 
      average = score1 + score2 + score3/3; 
      System.out.println(setLeft(41,"Average: ") + average); 


     } 
     else 
     { 
      System.out.println(setLeft(40,"Error")); 

     } 
+1

Quelle entrée et la sortie en êtes-vous dès maintenant pour la moyenne? – notyou

+0

Si je saisis 20 pour chaque score, il dit que la moyenne est de 46, je ne sais pas pourquoi – user8723490

+1

Astuce: Saupoudrez généreusement les parenthèses sur votre code. –

Répondre

4

Java opérateurs mathématiques Obéissons la priorité mathématique standard, il est donc

int average = score1 + score2 + (score3/3); 

Cependant, vous r intention était probablement

int average = (score1 + score2 + score3)/3; 

Enfin vous avez très probablement envie de faire ce calcul double (ou float) arithmétique, sinon il sera arrondi

double average = (double)(score1 + score2 + score3)/3; 
+2

+1 pour indiquer la division entière, bien que la question ait également 'average' comme' int', et donc aussi probablement '' double'' – SteveR

3

La division opérateur (/) a une priorité plus élevée que l'opérateur d'addition (+), de sorte que vous devrez inclure la somme avec des crochets avant de se diviser:

average = (score1 + score2 + score3)/3; 
// Here --^------------------------^