有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java投票系统错误

所以,目前我的投票系统运行良好,但现在我得到了一个除以零的代码:/。这不应该发生,因为“总整数的数值总是大于零(除非我遗漏了什么?)。不管怎么说,我希望该计划能够把选票组织成女性和男性选民,无论他们是投票给特朗普还是克林顿。 一揽子投票

import java.util.Scanner;

import javax.swing.JOptionPane;

public class vote {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    // Declare Strings and Initialize
            String PCandidate1=null;
            String Gender1=null;
            String Economy1= null;


    //Declare Integer
            int Age;
            int Trump=0;
            int Clinton=0;
            int Male=0;
            int Female=0;
            int MaleT=0;
            int FemaleT=0;
            int MaleC=0;
            int FemaleC=0;
            int Young=0;



    //all data read from a dialog box comes into a string
           String svalue,output ="";
    //Need to Implement While loop to keep collecting data

           int counter=0;
            while(counter<4) {
                counter++;
   //Vote for Presidential Candidate and Tally the Votes!

    svalue =JOptionPane.showInputDialog(null,"Will you Vote for  Clinton or  Trump?","Input Data",   JOptionPane.QUESTION_MESSAGE);
    svalue=JOptionPane.showInputDialog(null,"Are you Male or Female (M/F)?","Input Data",   JOptionPane.QUESTION_MESSAGE);
    if (svalue.equals("trump")||(svalue.equals("Trump")))
            {
      if (svalue.equals("F")||(svalue.equals("f")))
         Trump++; 
         Female++; 
         FemaleT++;}

     if (svalue.equals("Trump")||(svalue.equals("trump")))
             {
        if (svalue.equals("M")||(svalue.equals("m")))
        MaleT++;
        Trump++;
        Male++;}

    if (svalue.equals("clinton")||(svalue.equals("Clinton"))){

        if (svalue.equals("M")||(svalue.equals("m")))
        Clinton++;
        MaleC++;
        Male++;}

     if (svalue.equals("Clinton")||(svalue.equals("clinton"))){

        if(svalue.equals("F")||(svalue.equals("f"))) 
               FemaleC++;
               Clinton++;
               Female++;}
    PCandidate1= (svalue);






    //Inpute Users Age

    svalue=JOptionPane.showInputDialog(null,"What is Your Age?","Input Data",   JOptionPane.QUESTION_MESSAGE);
    Age=Integer.parseInt(svalue);
    if (Age<=25)
        Young++;

    // Get Users Input about State of the Economoy

    svalue=JOptionPane.showInputDialog(null,"Do you feel the economy is getting better?","Input Data",   JOptionPane.QUESTION_MESSAGE);
    Economy1= (svalue);
            }
    int Total=Male+Female;



  //Output The Data to Form
    output=output+"Users Voted For Trump:  " + Trump +"\n"
                  + "Users Voted For Clinton: "  + Clinton+ "\n"
                  +"Total Users Polled: " +(Total)+"\n"
                  + "Male Voters: "  + Male+ "\n"
                  + "Female Voters: "  + Female+ "\n"
                  + "% Female Voters for Clinton: "  + (FemaleC/Clinton)*100+ "\n"
                  + "% Male Voters for Clinton: "  + (MaleC/Clinton)*100+ "\n"
                  + "% Female Voters for Trump: "  + (FemaleT/Total)*100+ "\n"
                  + "% Male Voters for Trump: "  + (MaleT/Total)*100+ "\n"
                  + "Number of Young People Polled: "  + Young+ "\n"
                    ;






  //write all in a dialog box



    JOptionPane.showMessageDialog(null,
                    output,"Output:",JOptionPane.INFORMATION_MESSAGE);

    System.exit(0);

共 (1) 个答案

  1. # 1 楼答案

    你的if-statements有很多问题:

    if (svalue.equals("clinton")||(svalue.equals("Clinton"))){
    
    if (svalue.equals("M")||(svalue.equals("m")))
        Clinton++;
        MaleC++;
        Male++;}
    
    1. 在第二个if语句中没有括号
    2. 你的if's检查一个值是否同时等于“Clinton”和“m”。这意味着你的第二个if-statement将永远不会被输入。所以Clinton永远不会被更新,并且总是为零。(我们还以为是俄罗斯人……)

    您需要有第二个变量来确定投票者是男性还是女性,并在第二个if-statement中进行检查,而不是覆盖svalue

    旁注:适当的缩进将帮助您发现这些错误

    更像这样:

    gender =JOptionPane.showInputDialog(null,"Are you Male or Female (M/F)?","Input Data",   JOptionPane.QUESTION_MESSAGE);
    //…
    if (svalue.equals("clinton")||(svalue.equals("Clinton"))){
    
          if (gender.equals("M")||(gender.equals("m"))) { 
             Clinton++;
             MaleC++;
             Male++;
          }
    //Etc