Issue
Output comes up as 27 A's, 0 B's-F's. Can anyone help me to fix the code so that it reads the grades correctly? The text file is just: 90 78 67 88 33 94 100 18 74 82 60 62 83 91 88 55 42 76 91 80 70 40 98 , with one grade per line
package grades;
import java.io.*;
import java.util.Scanner;
public class grades {
public static void main(String[] args)throws FileNotFoundException {
File myFile = new File("grades.txt");
Scanner inputFile = new Scanner(myFile);
int gradeA = 0;
int gradeB = 0;
int gradeC = 0;
int gradeD = 0;
int gradeF = 0;
while(inputFile.hasNext())
{
int grade = inputFile.nextInt();
if(grade >= 90 || grade <= 100)
gradeA++;
else if(grade >= 80 || grade <= 89)
gradeB++;
else if(grade >= 70 || grade <= 79)
gradeC++;
else if(grade >= 60 || grade <= 69)
gradeD++;
else if(grade <= 59)
gradeF++;
}
inputFile.close();
System.out.println("Here are the amount for each Letter Grade:");
System.out.println("\tA: "+gradeA);
System.out.println("\tB: "+gradeB);
System.out.println("\tC: "+gradeC);
System.out.println("\tD: "+gradeD);
System.out.println("\tF: "+gradeF);
}
}
Solution
Start with the highest priority if statement or use the && operands
`public class grades {
public static void main(String[] args)throws FileNotFoundException {
File myFile = new File("grades.txt");
Scanner inputFile = new Scanner(myFile);
int gradeA = 0;
int gradeB = 0;
int gradeC = 0;
int gradeD = 0;
int gradeF = 0;
while(inputFile.hasNext())
{
int grade = inputFile.nextInt();
if(grade <= 59)
gradeF++;
else if(grade >= 60 || grade <= 69)
gradeD++;
else if(grade >= 70 || grade <= 79)
gradeC++;
else if(grade >= 80 || grade <= 89)
gradeB++;
else
gradeA++;
}
inputFile.close();
System.out.println("Here are the amount for each Letter Grade:");
System.out.println("\tA: "+gradeA);
System.out.println("\tB: "+gradeB);
System.out.println("\tC: "+gradeC);
System.out.println("\tD: "+gradeD);
System.out.println("\tF: "+gradeF);
}
}
`
public class grades {
public static void main(String[] args)throws FileNotFoundException {
File myFile = new File("grades.txt");
Scanner inputFile = new Scanner(myFile);
int gradeA = 0;
int gradeB = 0;
int gradeC = 0;
int gradeD = 0;
int gradeF = 0;
while(inputFile.hasNext())
{
int grade = inputFile.nextInt();
if(grade >= 90 && grade <= 100)
gradeA++;
else if(grade >= 80 && grade <= 89)
gradeB++;
else if(grade >= 70 && grade <= 79)
gradeC++;
else if(grade >= 60 && grade <= 69)
gradeD++;
else if(grade <= 59)
gradeF++;
}
inputFile.close();
System.out.println("Here are the amount for each Letter Grade:");
System.out.println("\tA: "+gradeA);
System.out.println("\tB: "+gradeB);
System.out.println("\tC: "+gradeC);
System.out.println("\tD: "+gradeD);
System.out.println("\tF: "+gradeF);
}
}
Answered By - Oluwapelumi
Answer Checked By - Cary Denson (JavaFixing Admin)