Процент расчета проблем

1

Я набрал избирательный кодекс, и я не могу получить процент голосов за кандидатов. Вот мой код:

import java.util.Scanner;

public class Voting

{
  public static void main (String [] args)
   {
    int candidate1;
    int candidate2;
    int Toronto1;
    int Toronto2;
    int Mississauga1;
    int Mississauga2;
    int Brampton1;
    int Brampton2;
    int total_votes1;
    int total_votes2;
    int totalall;
    double percentage1;
    double percentage2;

    Scanner input = new Scanner (System.in);


    System.out.print("Votes for Candidate 1 from Toronto");
    Toronto1=input.nextInt();
    System.out.print("Votes for Candidate 2 from Toronto");
    Toronto2=input.nextInt();
    System.out.print("Votes for Candidate 1 from Mississauga");
    Mississauga1=input.nextInt();
    System.out.print("Votes for Candidate 2 from Mississauga");
    Mississauga2=input.nextInt();
    System.out.print("Votes for Candidate 1 from Brampton");
    Brampton1=input.nextInt();
    System.out.print("Votes for Candidate 2 from Brampton");
    Brampton2=input.nextInt();

    total_votes1=Toronto1+Mississauga1+Brampton1;
    total_votes2=Toronto2+Mississauga2+Brampton2;
    totalall=total_votes1+total_votes2;
    percentage1=(Toronto1+Mississauga1+Brampton1)/(total_votes1+total_votes2);
    percentage2=(Toronto2+Mississauga2+Brampton2)/(total_votes1+total_votes2);

    System.out.println("Election Results for Toronto:");
    System.out.println("Candidate 1 = " +Toronto1+ "");
    System.out.println("Candidate 2 = " +Toronto2+ "\n");

    System.out.println("Election Results for Mississauga:");
    System.out.println("Candidate 1 = " +Mississauga1+ "");
    System.out.println("Candidate 2 = " +Mississauga2+ "\n");

    System.out.println("Election Results for Brampton:");
    System.out.println("Candidate 1 = " +Brampton1+ "");
    System.out.println("Candidate 2 = " +Brampton2+ "\n");


    System.out.println("Candidate        Vote             Percentage\n");
    System.out.println("Candidate1         "  +total_votes1+ "                   "+percentage1+"%");
    System.out.println("Candidate2         "  +total_votes2+ "                   "+percentage2+"%");
    System.out.println("Total Votes        "  +totalall+"");

  }
}

это ответ:

Votes for Candidate 1 from Toronto [5] 
Votes for Candidate 2 from Toronto [5]
Votes for Candidate 1 from Mississauga [5]
Votes for Candidate 2 from Mississauga [5]
Votes for Candidate 1 from Brampton [5]
Votes for Candidate 2 from Brampton [5]

Election Results for Toronto:
Candidate 1 = 5
Candidate 2 = 5

Election Results for Mississauga:
Candidate 1 = 5
Candidate 2 = 5

Election Results for Brampton:
Candidate 1 = 5
Candidate 2 = 5

Candidate        Vote             Percentage

Candidate1         15                   0.0%
Candidate2         15                   0.0%
Total Votes        30

Как вы можете видеть, это говорит о 0,0% вместо 50%.

Можете ли вы также сказать мне, почему аннотация, когда я пишу вопрос, говорит: "Похоже, что ваш пост - это в основном код, пожалуйста, добавьте еще несколько деталей"?

Теги:

1 ответ

6
Лучший ответ

Похоже, вы делаете int division. Int, деленный на int, приводит к int!

Таким образом, 20/40 будет == 0, поскольку 20 составляет <40. Если вам нужен результат с плавающей запятой, используйте удвоения:

(double) 20 / 40

или для процентов, по крайней мере, умножить на 100 в первую очередь.

т.е. изменить

percentage1=(Toronto1+Mississauga1+Brampton1)/(total_votes1+total_votes2);

в

percentage1=(100 * (Toronto1+Mississauga1+Brampton1))/(total_votes1+total_votes2);
  • 0
    @JasonC: нет, если он находится внутри скобок, он позволит делению int возвращать ненулевое десятичное число. Я оставлю это как есть.
  • 1
    @JasonC: yikes, ты прав! Код исправлен, и спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню