Программа продолжает завершаться, и я не могу понять, почему

#java

#java

Вопрос:

Каждый раз, когда я пытаюсь запустить эту программу, она завершается, и я не могу понять, почему? Я пытаюсь заставить ее выводить данные избирателей при получении входных данных из диалоговых окон. Каждый раз, когда я пытаюсь запустить программу, она завершает ее. Я поиграл с кодом, но, похоже, не могу понять, почему. Приветствуется любая помощь.

 package voting;

import javax.swing.JOptionPane;

public class VotingData {

    public static void main(String[] args) {
        new VotingData();
    }
        
    VotingData(){
 
        String[] choices = {"M","F"};
        int gender = JOptionPane.showOptionDialog(null, "Select M for male and F for female", "Click a button", JOptionPane.DEFAULT_OPTION, 
        JOptionPane.INFORMATION_MESSAGE, null, choices, choices[0]);
        String[] options = {"a","b"};
        int age = JOptionPane.showOptionDialog(null, "Select a if you are older than 25 select b if younger", "Click a button", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]);

        String[] choose = {"Yes","No"};
        int ed = JOptionPane.showOptionDialog(null, "Select yes if you graduated college, select no if you did not", "Click a button", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, choose, choose[0]);
        String[] decide = {"Trump","Biden"};
        int president = JOptionPane.showOptionDialog(null, "Select your presidential canidate", "Click a button", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, decide, decide[0]);
        double totalvoters, femalevoters, malevoters, femalebiden, malebiden, femaletrump, maletrump, femalecollegetrump, femalecollegebiden, u25trump, u25biden, totaltrump, totalbiden, totalcollege, totalnoncollege, u25total, over25total;

    {
        femalevoters=Double.parseDouble("F");
        malevoters=Double.parseDouble("M");
        totalvoters=femalevoters malevoters;
        totalbiden=Double.parseDouble("Biden");
        totaltrump=Double.parseDouble("Trump");
        totalcollege=Double.parseDouble("Yes");
        totalnoncollege=Double.parseDouble("No");
        u25total=Double.parseDouble("b");
        over25total=Double.parseDouble("a");
        femalebiden=((totalvoters-malevoters-totaltrump)/totalvoters*100);
        femaletrump=((totalvoters-malevoters-totalbiden)/totalvoters*100);
        malebiden=((totalvoters-femalevoters-totaltrump)/totalvoters*100);
        maletrump=((totalvoters-femalevoters-totalbiden)/totalvoters*100);
        femalecollegebiden=((totalvoters-malevoters-totalnoncollege-        totaltrump)/totalvoters*100);
        femalecollegetrump=((totalvoters-malevoters-totalnoncollege-totalbiden)/totalvoters*100);
        u25biden=((totalvoters-over25total-totaltrump)/totalvoters*100);
        u25trump=((totalvoters-over25total-totalbiden)/totalvoters*100);

        int gender1=0;
        while (gender1<20) {
            System.out.println(age);
            age  ;
            System.out.println("The total number of voters ="   totalvoters);
            System.out.println("The total number of female voters ="   femalevoters);
            System.out.println("The total number of male voters ="   malevoters);
            System.out.println("The total percent of female Biden supporters ="   femalebiden);
            System.out.println("The total percent of female Trump supporters ="   femaletrump);
            System.out.println("The total percent of male Biden supporters ="   malebiden);
            System.out.println("Thetotal percent of male Trump supporters ="   maletrump);
            System.out.println("The total percent of female college educated                         
            Bdien supporters ="   femalecollegebiden);
            System.out.println("The total percent of female college edcucated                         

            Trump suppoerters ="   femalecollegetrump);
            System.out.println("The total percent of under 25 Biden supporters ="   u25biden);
            System.out.println("The total percent of under 25 Trump supporters ="   u25trump);
            System.out.println("The total amount of voters for Biden ="   totalbiden);
            System.out.println("The total amount of voters for Trump ="   totaltrump);

            System.exit(0);
         }
       }
    }
  }
  

Комментарии:

1. Как вы думаете, что это делает? Double.parseDouble("F"); Как, по-вашему, вы бы преобразовали строку F в числовое значение?

2. Я полагаю, что это преобразовало бы запись female из целого числа в double, чтобы я мог использовать ее для вычисления необходимых данных избирателя. Я думаю, что это может быть моей проблемой, потому что я пытаюсь подсчитать количество раз, когда была выбрана женщина

3. Он пытается преобразовать литеральную строку "F" в double. «F» не является двойным. Вы должны увидеть NumberFormatException предполагая, что это не сбой по какой-либо другой причине. Вам нужно передать фактическое число в parseDouble , например Double.parseDouble("2.01")

4. Если вы обернете parse.. вызовы метода в блок try-catch и распечатаете исключения, вы поймете, почему это не удается.

5. Вы получаете выходные данные на терминале, где вы запускаете это; вам нужно прочитать это.

Ответ №1:

Хммм… Вот так.
Все синтаксические ошибки были удалены, и я показал вам направление, в котором вам нужно двигаться.

 import javax.swing.JOptionPane;

public class VotingData
{

    public static void main(String[] args)
    {
        new VotingData();
    }

    VotingData()
    {

        String[] choices = {"M","F"};
        String[] options = {"a","b"};
        String[] choose = {"Yes","No"};
        String[] decide = {"Trump","Biden"};
        double totalvoters, femalevoters, malevoters, femalebiden, malebiden, femaletrump, maletrump, femalecollegetrump, femalecollegebiden, u25trump, u25biden, totaltrump, totalbiden, totalcollege, totalnoncollege, u25total, over25total;
        totalvoters= femalevoters= malevoters= femalebiden= malebiden= femaletrump= maletrump= femalecollegetrump= femalecollegebiden= u25trump= u25biden= totaltrump= totalbiden= totalcollege= totalnoncollege= u25total= over25total= 0;
        int gender,age,ed,president,stop;

        do
        {
            gender = JOptionPane.showOptionDialog(null, "Select M for male and F for female", "Click a button", JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE, null, choices, choices[0]);
            if(gender==0)
                  malevoters;
            else
                  femalevoters;

            age = JOptionPane.showOptionDialog(null, "Select a if you are older than 25 select b if younger", "Click a button", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]);
            if(age == 0)
                  over25total;
            else
                  u25total;

            ed = JOptionPane.showOptionDialog(null, "Select yes if you graduated college, select no if you did not", "Click a button", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, choose, choose[0]);
            if(ed == 0)
                  totalcollege;
            else
                  totalnoncollege;

            president = JOptionPane.showOptionDialog(null, "Select your presidential canidate", "Click a button", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, decide, decide[0]);
            if(president == 0)
                  totaltrump;
            else
                  totalbiden;

            stop = JOptionPane.showOptionDialog(null, "Vote again?", "Click a button", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, choose, choose[0]);

        }while(stop==0);

        totalvoters=femalevoters malevoters;
        femalebiden=((totalvoters-malevoters-totaltrump)/totalvoters*100);
        femaletrump=((totalvoters-malevoters-totalbiden)/totalvoters*100);
        malebiden=((totalvoters-femalevoters-totaltrump)/totalvoters*100);
        maletrump=((totalvoters-femalevoters-totalbiden)/totalvoters*100);
        femalecollegebiden=((totalvoters-malevoters-totalnoncollege-totaltrump)/totalvoters*100);
        femalecollegetrump=((totalvoters-malevoters-totalnoncollege-totalbiden)/totalvoters*100);
        u25biden=((totalvoters-over25total-totaltrump)/totalvoters*100);
        u25trump=((totalvoters-over25total-totalbiden)/totalvoters*100);

        int gender1=0;
        while (gender1<20)
        {
            System.out.println(age);
            age  ;
            System.out.println("The total number of voters ="   totalvoters);
            System.out.println("The total number of female voters ="   femalevoters);
            System.out.println("The total number of male voters ="   malevoters);
            System.out.println("The total percent of female Biden supporters ="   femalebiden);
            System.out.println("The total percent of female Trump supporters ="   femaletrump);
            System.out.println("The total percent of male Biden supporters ="   malebiden);
            System.out.println("Thetotal percent of male Trump supporters ="   maletrump);
            System.out.println("The total percent of female college educated Bdien supporters ="   femalecollegebiden);
            System.out.println("The total percent of female college edcucated Trump suppoerters ="   femalecollegetrump);
            System.out.println("The total percent of under 25 Biden supporters ="   u25biden);
            System.out.println("The total percent of under 25 Trump supporters ="   u25trump);
            System.out.println("The total amount of voters for Biden ="   totalbiden);
            System.out.println("The total amount of voters for Trump ="   totaltrump);

            System.exit(0);
        }        
    }
}
  

ПРИМЕЧАНИЕ: Я не касался ваших вычислений и не менял ваш код, предоставляющий выходные данные. Я только решил вашу проблему, как указано в вопросе.

Поддержите, если хотите 😉