How can i fix determineGrade(); so that after entering every new Int input it gives you a grade. I could just repeat res1 for res2 and res3 but isnt there a simplier way?
import java.util.Scanner;
public class Answer3 {
static int avg;
static int res1;
static int res2;
static int res3;
static Scanner inPut = new Scanner(System.in);
public static void main(String[] args) {
calcAverage();
}
static void calcAverage()
{
System.out.println("Please input exam 1 results");
res1 = inPut.nextInt();
determineGrade();
System.out.println("Please input exam 2 results");
res2 = inPut.nextInt();
determineGrade();
System.out.println("Please input exam 3 results");
res3 = inPut.nextInt();
determineGrade();
avg = (res1 + res2 + res3) / 3;
System.out.println("The average of these exam results are " + avg);
}
static void determineGrade()
{
String grade = null;
if ( res1 > 84 && res1 <101 )
{
grade = "HD";
}
else if ( res1 > 74 && res1 <85 )
{
grade = "D";
}
else if ( res1 > 64 && res1 < 75 )
{
grade = "C";
}
else if ( res1 > 49 && res1 < 65 )
{
grade = "P";
}
else if ( res1 < 50 )
{
grade = "F";
}
System.out.println("Your grade is " + grade);
}
}
Instead of making res1
a static field, pass the result (and the exam number) to the method. Something like,
static void determineGrade(int exam, int res)
{
String grade = null;
if ( res > 84 && res <101 )
{
grade = "HD";
}
else if ( res > 74 && res <85 )
{
grade = "D";
}
else if ( res > 64 && res < 75 )
{
grade = "C";
}
else if ( res > 49 && res < 65 )
{
grade = "P";
}
else if ( res < 50 )
{
grade = "F";
}
System.out.printf("Your grade for exam %d is %s%n", exam, grade);
}
Then you can call it with each result (and exam number). Like
determineGrade(1, res1);
determineGrade(2, res2);
determineGrade(3, res3);
You can try with below solution.
determineGrade
will return the grade - you limit printing results just for the main method. Also resCount
makes your program more dynamic and easier to extend.
public class Answer3 {
static int resCount = 3;
static Scanner inPut = new Scanner(System.in);
public static void main(String[] args) {
calcAverage();
}
static void calcAverage() {
int sum = 0;
for (int i = 0; i < resCount; i++) {
System.out.println("Please input exam " + i + " results");
int res = inPut.nextInt();
sum += res;
String grade = determineGrade(res);
System.out.println("Your grade is " + grade);
}
double avg = sum / resCount;
System.out.println("The average of these exam results are " + avg));
}
static String determineGrade(int res) {
if ( res > 84 && res <101 ) {
return "HD";
} else if ( res > 74 && res <85 ) {
return "D";
} else if ( res > 64 && res < 75 ) {
return "C";
} else if ( res > 49 && res < 65 ) {
return "P";
} else {
return "F";
}
}
}
I am not sure if I understood you correctly, but here is my solution:
static void calcAverage()
{
System.out.println("Please input exam 1 results");
res1 = inPut.nextInt();
determineGrade(res1);
System.out.println("Please input exam 2 results");
res2 = inPut.nextInt();
determineGrade(res2);
System.out.println("Please input exam 3 results");
res3 = inPut.nextInt();
determineGrade(res3);
avg = (res1 + res2 + res3) / 3;
System.out.println("The average of these exam results are " + avg);
}
static void determineGrade(int res1)
{
String grade = null;
if ( res1 > 84 && res1 <101 )
{
grade = "HD";
}
else if ( res1 > 74 && res1 <85 )
{
grade = "D";
}
else if ( res1 > 64 && res1 < 75 )
{
grade = "C";
}
else if ( res1 > 49 && res1 < 65 )
{
grade = "P";
}
else if ( res1 < 50 )
{
grade = "F";
}
System.out.println("Your grade is " + grade);
}
static String determineGrade()
{
if (res1 > 100) {
return null;
}
else if (res1 < 50) {
return "F";
}
else if (res1 < 65 )
{
return "P";
}
else if (res1 < 75 )
{
return "C";
}
else if (res1 <85 )
{
return "D";
}
else
{
return "HD";
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.