Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Simple java grade program

  1. Nov 10, 2011 #1
    Hi i am looking for following output.so far I am only getting result for total no of grades.I am getting 0 for A B C D and F.
     
  2. jcsd
  3. Nov 11, 2011 #2

    Mark44

    Staff: Mentor

    There are several problems with your code.
    1. grade is declared as an int and is initialized to 0, but in your if statements, you are attempting to store a character value in it.
    2. grade should be given a value from the input string, but your code doesn't do this. None of the conditions in your if statements evaluate to true, so none of the code in the if statements actually executes.
    3. Your for loop counts the nonspace characters in the input string. This is not the same as the number of grades in the string.
    4. You never get the grades out of the input string. This should happen inside a loop, which should also contain your logic for determining whether a given grade is an A, B, and so on. The Scanner class has some methods that will be helpful; namely, hasNextInt and nextInt. See http://download.oracle.com/javase/7/docs/api/.
     
  4. Nov 14, 2011 #3
    i make some changings
    Code (Text):
    import java.util.Scanner;
    public class ExamScores
    {
        public static void main (String[]args)
        {
            String letterGrade;
            double numberOfGrades;
            double grade;
            //create scanner object
            Scanner scan = new Scanner(System.in);
            //ask user for input
            System.out.println("How many grades do you have to enter?: ");
            //reads in the number of grades user wants to enter as double from keyboard
            numberOfGrades = scan.nextDouble();
            //now since program knows how many grades are being entered it can
            //control the input
            for(int j = 1; j <= numberOfGrades; j++)
               //based off of number of grades the user inputs it will ask
               //for that many exam grades
               System.out.println("Enter your exam grades: ");
               //reads in exam scores as a double from keyboard
               grade = scan.nextDouble();
               //compares the datafield grade with scores 90-100
               if (grade >= 90 && grade <= 100) {
                  //if 90 >= grade <=100 the letter grade is A
                  letterGrade = "A";
                  //if letter grade is A then A which is an int that is initialized at 0
                  //has 1 added to it. THIS IS WHERE YOUR VALUE CHANGES.
                  if(letterGrade == "A"){
                     A = A + 1;
                  }

                if (grade >= 80 && grade <= 89) {
                  //if 90 >= grade <=100 the letter grade is A
                  letterGrade = "B";}
                //if letter grade is A then A which is an int that is initialized at 0
                //has 1 added to it. THIS IS WHERE YOUR VALUE CHANGES.
                if(letterGrade == "B"){
                   B = B + 1;
                         }
                if (grade >= 70 && grade <= 79) {
                  //if 90 >= grade <=100 the letter grade is A
                  letterGrade = "C";}
                //if letter grade is A then A which is an int that is initialized at 0
                //has 1 added to it. THIS IS WHERE YOUR VALUE CHANGES.
                if(letterGrade == "C"){
                   C = C + 1;
                }
                if (grade >= 60 && grade <= 69) {
                    //if 90 >= grade <=100 the letter grade is A
                    letterGrade = "D";}
                //if letter grade is A then A which is an int that is initialized at 0
                //has 1 added to it. THIS IS WHERE YOUR VALUE CHANGES.
                if(letterGrade == "D"){
                    D = D + 1;
                }
                if (grade >= 0 && grade <= 59) {
                    //if 90 >= grade <=100 the letter grade is A
                    letterGrade = "F";}
                //if letter grade is A then A which is an int that is initialized at 0
                //has 1 added to it. THIS IS WHERE YOUR VALUE CHANGES.
                if(letterGrade == "F"){
                    F = F + 1;
                }

               System.out.println("Total number of each letter grade: " + numberOfGrades);
               System.out.println("Number of A" + A);
               System.out.println("Number of B" +B);
               System.out.println("Number of C" + C);
               System.out.println("Number of D" + D);
               System.out.println ("Number of F" + F);

        }

       }
    }
     
    Last edited by a moderator: Nov 14, 2011
  5. Nov 14, 2011 #4

    Mark44

    Staff: Mentor

    Does it work?
     
  6. Nov 14, 2011 #5

    Mark44

    Staff: Mentor

    Some comments.
    1. Your code won't compile - there are variables used that aren't declared.
    2. The for loop won't work as you expect, as you are missing braces ({ }) around the body of the loop. The structure of the for loop should be like this.
    Code (Text):
    for(int j = 1; j <= numberOfGrades; j++)
    {
       // Body of loop
    }
    3. When you ask the user how many grades will be entered, you shouldn't be using a double to store that value. The user will not be entering 7.36 grades. Use an int.
    4. If the grades themselves are whole numbers, use ints to store them.
    5. Here is one of your grade-determining branches.
    Code (Text):
    if (grade >= 90 && grade <= 100) {
       //if 90 >= grade <=100 the letter grade is A
       letterGrade = "A";
       //if letter grade is A then A which is an int that is initialized at 0
       //has 1 added to it. THIS IS WHERE YOUR VALUE CHANGES.
       if(letterGrade == "A"){
            A = A + 1;
       }
    All of the branches have exactly the same comments. The comments should be updated for each of the five sections.
    There is no need for a letterGrade variable. You can trim your code down considerably to this:
    Code (Text):
    if (grade >= 90 && grade <= 100)
    {
       A_count = A_count + 1;
    }
     
  7. Nov 15, 2011 #6
    Why are you taking A=A+1, B=B+1, C=C+1, D=D+1, E=E+1, F=F+1 in If, else-if blocks?
    Code (Text):
    if (grade > 90 && grade <= 100) {
    grade= 'A';
    [COLOR="Red"]A=A+1;[/COLOR]
    count++;
    } else if (grade > 80 && grade <= 89) {
    grade= 'B';
    [COLOR="Red"]B=B+1;[/COLOR]
    count++;

    } else if (grade > 70 && grade <= 79) {
    grade= 'C';
    [COLOR="Red"]C=C+1;[/COLOR]
    count++;

    } else if (grade > 60 && grade <= 69) {
    grade= 'D';
    [COLOR="Red"]D=D+1;[/COLOR]
    count++;
    } else if (grade> 0 && grade <= 59) {
    grade= 'F';
    [COLOR="Red"]F=F+1;[/COLOR]
    count++;
    }
     
  8. Nov 15, 2011 #7

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    Presumably, to count the number of people with each grade.

    If your question really meant "Why write A=A+1 rather than A++", they both do the same thing.
     
  9. Nov 16, 2011 #8

    Mark44

    Staff: Mentor

    pairofstrings,
    I have deleted two of your posts, as you are giving too much help. Do not try to post a complete or near-complete solution again.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Simple java grade program
  1. Simple Java Program Help (Replies: 18)

  2. Java Programming (Replies: 12)

Loading...