Azurespot
Azurespot

Reputation: 3152

2nd dialog box won't run - Java

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

Answers (2)

Raj
Raj

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

DnR
DnR

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

Related Questions