#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);
}
}
}
ПРИМЕЧАНИЕ: Я не касался ваших вычислений и не менял ваш код, предоставляющий выходные данные. Я только решил вашу проблему, как указано в вопросе.
Поддержите, если хотите 😉