Reputation: 3152
There are 2 dialog boxes that are supposed to pop up in this program. One that tells you to enter the "Student type" (which is a number 1, 2 or 3), and the 2nd one is supposed to allow you to enter student grades.
I run it, and only get the first dialog box, which works fine, I enter a type (1 through 3) and should get a 2nd box that shows entries for putting grades.
Why is the 2nd box not showing up? It is the same method type of Dialog Box as my first one. My program quits after the 1st dialog box is used. Thank you for your help, I am a beginner with Java.
import javax.swing.JOptionPane;
public class Exercise4_8 {
public static void main(String[] args) {
final double ENGLISH_MIDTERM_PERCENTAGE = .25;
final double ENGLISH_FINALEXAM_PERCENTAGE = .25;
final double ENGLISH_RESEARCH_PERCENTAGE = .30;
final double ENGLISH_PRESENTATION_PERCENTAGE = .20;
final double MATH_MIDTERM_PERCENTAGE = .50;
final double MATH_FINALEXAM_PERCENTAGE = .50;
final double SCIENCE_MIDTERM_PERCENTAGE = .40;
final double SCIENCE_FINALEXAM_PERCENTAGE = .40;
final double SCIENCE_RESEARCH_PERCENTAGE = .20;
int midterm = 0;
int finalExamGrade = 0;
int research = 0;
int presentation = 0;
double finalNumericGrade = 0;
String finalLetterGrade = "";
String response;
//What type of student are we calculating?
response = JOptionPane.showInputDialog("Enter student type (1=English, 2=Math, 3=Science)");
if(response == null){
JOptionPane.showMessageDialog(null, "You clicked on the Cancel button");
}
else if(response.equals("")){
JOptionPane.showMessageDialog(null, "You must make an entry in the InputBox");
}
else if(Integer.parseInt(response) < 1 || Integer.parseInt(response) > 3) {
JOptionPane.showMessageDialog(null, response + " - is not a valid student type");
System.exit(0);
//Student type is valid, now let's calculate grade
switch(Integer.parseInt(response)){
//Case 1 is an English Student
case 1:
midterm = Integer.parseInt(JOptionPane.showInputDialog("Enter the Midterm Grade"));
finalExamGrade = Integer.parseInt(JOptionPane.showInputDialog("Enter the Final Examination Grade"));
research = Integer.parseInt(JOptionPane.showInputDialog("Enter the Research Grade"));
presentation = Integer.parseInt(JOptionPane.showInputDialog("Enter the Presentation Grade"));
finalNumericGrade = (midterm * ENGLISH_MIDTERM_PERCENTAGE) +
(finalExamGrade * ENGLISH_FINALEXAM_PERCENTAGE) +
(research * ENGLISH_RESEARCH_PERCENTAGE) +
(presentation * ENGLISH_PRESENTATION_PERCENTAGE);
if(finalNumericGrade >=93)
finalLetterGrade = "A";
else
if((finalNumericGrade >= 85) && (finalNumericGrade < 93))
finalLetterGrade = "B";
else
if((finalNumericGrade >= 78) && (finalNumericGrade < 85))
finalLetterGrade = "C";
else
if((finalNumericGrade >= 70) && (finalNumericGrade < 78))
finalLetterGrade = "D";
else
if (finalNumericGrade < 70)
finalLetterGrade = "F";
JOptionPane.showMessageDialog(null, "***ENGLISH STUDENT***\n\n" +
"Mideterm grade is: " + midterm + "\n" +
"Final Exam is: " + finalExamGrade + "\n" +
"Research grade is: " + research + "\n" +
"Presentation grade is: " + presentation + "\n\n" +
"Final Numeric Grade is: " + finalNumericGrade + "\n" +
"Final Letter Grade is: " + finalLetterGrade);
break;
//Case 2 is a Math Student
case 2:
midterm = Integer.parseInt(JOptionPane.showInputDialog("Enter the Midterm Grade"));
finalExamGrade = Integer.parseInt(JOptionPane.showInputDialog("Enter the Final Examination Grade"));
finalNumericGrade = (midterm * MATH_MIDTERM_PERCENTAGE) +
(finalExamGrade * MATH_FINALEXAM_PERCENTAGE);
if(finalNumericGrade >= 90)
finalLetterGrade = "A";
else
if((finalNumericGrade >= 83) && (finalNumericGrade < 90))
finalLetterGrade = "B";
else
if((finalNumericGrade >= 76) && (finalNumericGrade < 83))
finalLetterGrade = "C";
else
if((finalNumericGrade >=65) & (finalNumericGrade < 76))
finalLetterGrade = "D";
else
if(finalNumericGrade <65)
finalLetterGrade = "F";
JOptionPane.showMessageDialog(null, "***MATH STUDENT***\n\n" +
"Midterm grade is: " + midterm + "\n" +
"Final Exam is: " + finalExamGrade + "\n\n" +
"Final Numeric Grade is: " + finalNumericGrade + "\n" +
"Final Letter Grade is: " + finalLetterGrade);
break;
//Case 3 is a Science Student
case 3:
midterm = Integer.parseInt(JOptionPane.showInputDialog("Enter the Midterm Grade"));
finalExamGrade = Integer.parseInt(JOptionPane.showInputDialog("Enter the Final Examination Grade"));
research = Integer.parseInt(JOptionPane.showInputDialog("Enter the Research Grade"));
finalNumericGrade = (midterm * SCIENCE_MIDTERM_PERCENTAGE) +
(finalExamGrade * SCIENCE_FINALEXAM_PERCENTAGE) +
(research * SCIENCE_RESEARCH_PERCENTAGE);
if(finalNumericGrade >= 90)
finalLetterGrade = "A";
else
if((finalNumericGrade >= 80) && (finalNumericGrade < 90))
finalLetterGrade = "B";
else
if((finalNumericGrade >= 70) && (finalNumericGrade < 80))
finalLetterGrade = "C";
else
if((finalNumericGrade >= 60) && (finalNumericGrade <70))
finalLetterGrade = "D";
else
if(finalNumericGrade < 60)
finalLetterGrade = "F";
JOptionPane.showMessageDialog(null, "***SCIENCE STUDENT***\n\n" +
"Midterm grade is: " + midterm + "\n" +
"Final Exam is: " + finalExamGrade + "\n" +
"Research grade is: " + research + "\n\n" +
"Final Numeric Grade is: " + finalNumericGrade + "\n" +
"Final Letter Grade is: " + finalLetterGrade);
break;
default:
JOptionPane.showMessageDialog(null, response + " - is not a valid student type");
System.exit(0);
}
System.exit(0);
}
}
}
Upvotes: 0
Views: 279
Reputation: 610
This is your working code check it:
public static void main(String[] args) {
final double ENGLISH_MIDTERM_PERCENTAGE = .25;
final double ENGLISH_FINALEXAM_PERCENTAGE = .25;
final double ENGLISH_RESEARCH_PERCENTAGE = .30;
final double ENGLISH_PRESENTATION_PERCENTAGE = .20;
final double MATH_MIDTERM_PERCENTAGE = .50;
final double MATH_FINALEXAM_PERCENTAGE = .50;
final double SCIENCE_MIDTERM_PERCENTAGE = .40;
final double SCIENCE_FINALEXAM_PERCENTAGE = .40;
final double SCIENCE_RESEARCH_PERCENTAGE = .20;
int midterm = 0;
int finalExamGrade = 0;
int research = 0;
int presentation = 0;
double finalNumericGrade = 0;
String finalLetterGrade = "";
String response;
//What type of student are we calculating?
response = JOptionPane.showInputDialog("Enter student type (1=English, 2=Math, 3=Science)");
if(response == null){
JOptionPane.showMessageDialog(null, "You clicked on the Cancel button");
}
else if(response.equals("")){
JOptionPane.showMessageDialog(null, "You must make an entry in the InputBox");
}
else if(Integer.parseInt(response) < 1 || Integer.parseInt(response) > 3) {
JOptionPane.showMessageDialog(null, response + " - is not a valid student type");
System.exit(0);
}
//Student type is valid, now let's calculate grade
switch(Integer.parseInt(response)){
//Case 1 is an English Student
case 1:
midterm = Integer.parseInt(JOptionPane.showInputDialog("Enter the Midterm Grade"));
finalExamGrade = Integer.parseInt(JOptionPane.showInputDialog("Enter the Final Examination Grade"));
research = Integer.parseInt(JOptionPane.showInputDialog("Enter the Research Grade"));
presentation = Integer.parseInt(JOptionPane.showInputDialog("Enter the Presentation Grade"));
finalNumericGrade = (midterm * ENGLISH_MIDTERM_PERCENTAGE) +
(finalExamGrade * ENGLISH_FINALEXAM_PERCENTAGE) +
(research * ENGLISH_RESEARCH_PERCENTAGE) +
(presentation * ENGLISH_PRESENTATION_PERCENTAGE);
if(finalNumericGrade >=93)
finalLetterGrade = "A";
else
if((finalNumericGrade >= 85) && (finalNumericGrade < 93))
finalLetterGrade = "B";
else
if((finalNumericGrade >= 78) && (finalNumericGrade < 85))
finalLetterGrade = "C";
else
if((finalNumericGrade >= 70) && (finalNumericGrade < 78))
finalLetterGrade = "D";
else
if (finalNumericGrade < 70)
finalLetterGrade = "F";
JOptionPane.showMessageDialog(null, "***ENGLISH STUDENT***\n\n" +
"Mideterm grade is: " + midterm + "\n" +
"Final Exam is: " + finalExamGrade + "\n" +
"Research grade is: " + research + "\n" +
"Presentation grade is: " + presentation + "\n\n" +
"Final Numeric Grade is: " + finalNumericGrade + "\n" +
"Final Letter Grade is: " + finalLetterGrade);
break;
//Case 2 is a Math Student
case 2:
midterm = Integer.parseInt(JOptionPane.showInputDialog("Enter the Midterm Grade"));
finalExamGrade = Integer.parseInt(JOptionPane.showInputDialog("Enter the Final Examination Grade"));
finalNumericGrade = (midterm * MATH_MIDTERM_PERCENTAGE) +
(finalExamGrade * MATH_FINALEXAM_PERCENTAGE);
if(finalNumericGrade >= 90)
finalLetterGrade = "A";
else
if((finalNumericGrade >= 83) && (finalNumericGrade < 90))
finalLetterGrade = "B";
else
if((finalNumericGrade >= 76) && (finalNumericGrade < 83))
finalLetterGrade = "C";
else
if((finalNumericGrade >=65) & (finalNumericGrade < 76))
finalLetterGrade = "D";
else
if(finalNumericGrade <65)
finalLetterGrade = "F";
JOptionPane.showMessageDialog(null, "***MATH STUDENT***\n\n" +
"Midterm grade is: " + midterm + "\n" +
"Final Exam is: " + finalExamGrade + "\n\n" +
"Final Numeric Grade is: " + finalNumericGrade + "\n" +
"Final Letter Grade is: " + finalLetterGrade);
break;
//Case 3 is a Science Student
case 3:
midterm = Integer.parseInt(JOptionPane.showInputDialog("Enter the Midterm Grade"));
finalExamGrade = Integer.parseInt(JOptionPane.showInputDialog("Enter the Final Examination Grade"));
research = Integer.parseInt(JOptionPane.showInputDialog("Enter the Research Grade"));
finalNumericGrade = (midterm * SCIENCE_MIDTERM_PERCENTAGE) +
(finalExamGrade * SCIENCE_FINALEXAM_PERCENTAGE) +
(research * SCIENCE_RESEARCH_PERCENTAGE);
if(finalNumericGrade >= 90)
finalLetterGrade = "A";
else
if((finalNumericGrade >= 80) && (finalNumericGrade < 90))
finalLetterGrade = "B";
else
if((finalNumericGrade >= 70) && (finalNumericGrade < 80))
finalLetterGrade = "C";
else
if((finalNumericGrade >= 60) && (finalNumericGrade <70))
finalLetterGrade = "D";
else
if(finalNumericGrade < 60)
finalLetterGrade = "F";
JOptionPane.showMessageDialog(null, "***SCIENCE STUDENT***\n\n" +
"Midterm grade is: " + midterm + "\n" +
"Final Exam is: " + finalExamGrade + "\n" +
"Research grade is: " + research + "\n\n" +
"Final Numeric Grade is: " + finalNumericGrade + "\n" +
"Final Letter Grade is: " + finalLetterGrade);
break;
default:
JOptionPane.showMessageDialog(null, response + " - is not a valid student type");
System.exit(0);
}
}
you did a mistake in closing of elseif(Integer.parseInt(response) < 1 || Integer.parseInt(response) > 3)
condition
Upvotes: 0
Reputation: 3517
Close your last else if
bracket {
:
else if(Integer.parseInt(response) < 1 || Integer.parseInt(response) > 3) {
JOptionPane.showMessageDialog(null, response + " - is not a valid student type");
System.exit(0);
}
And put else
just below it:
else{
This should solve your problem.
Upvotes: 2