[英]Java - How can I display a letter grade for each of my grades in my program rather than just my last one?
在我的大学作业中,我必须提示一个分数并让用户输入 6 次,然后在每个分数旁边显示一个字母分数,然后显示平均值。 我终于能够正确显示每个标记,但最后一个条目的字母等级显示为每个条目。 我需要在我的代码中进行哪些更改才能使其正常工作?
我有一种返回字母等级的方法,但该方法仅部分有效; 喜欢它显示适当的字母等级,但仅适用于最后一个条目。
package com.company;
import java.util.Scanner; //Summons the Scanner class
public class Main { //Main class
//Instance variables to count and calculate the grades
public static double total;
public static int grade;
public static int entries = 0;
public static void main(String[] args) { //Main method
//Creates a scanner for user input
Scanner keyboard = new Scanner(System.in);
int[]grades = new int[7];
while (entries < 6) { //Make the user enter 6 grades
do {
System.out.printf("Enter grade %d: ", entries); //Prompt for a grade
grades[entries] = grade;
entries++;
grade = keyboard.nextInt(); //Get the user input
total = total + grade; //Add grade to total
} while (!wrongValue(grade)); //Call a method to prompt for a re-entry upon user error
}
grades[6]=grade;
double average = total / 6; //Get the total
System.out.printf("1st grade is %d which is %s%n%%", grades[1], letterGrade(grade));
System.out.printf("2nd grade is %d which is %s%n%%", grades[2], letterGrade(grade));
System.out.printf("3rd grade is %d which is %s%n%%", grades[3], letterGrade(grade));
System.out.printf("4th grade is %d which is %s%n%%", grades[4], letterGrade(grade));
System.out.printf("5th grade is %d which is %s%n%%", grades[5], letterGrade(grade));
System.out.printf("6th grade is %d which is %s%n%%", grades[6], letterGrade(grade));
System.out.printf("total average = %.1f%%", average);
}
public static String letterGrade (int grade)
{
if (grade >= 90 && grade <= 100)
return "an A+";
else if (grade >= 80 && grade <= 90)
return "an A";
else if (grade >= 75 && grade <= 80)
return "a B+";
else if (grade >= 70 && grade <= 75)
return "a B";
else if (grade >= 65 && grade <= 70)
return "a C+";
else if (grade >= 60 && grade <= 65)
return "a C";
else if (grade >= 55 && grade <= 60)
return "a D+";
else if (grade >= 50 && grade <= 55)
return "a D";
else
return "an F";
}
}
我怀疑你想用你从用户那里读到的每个grade
来调用letterGrade
。 但首先, arrays 从0
(不是1
)开始。 您的格式String
(s) 有奇怪的%%
文字,它将在下一行重新开始,我稍微清理了代码(我不喜欢无用的临时变量,我也不喜欢未能阐明代码的注释)。 喜欢,
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int[] grades = new int[6];
int total = 0;
for (int i = 0; i < grades.length; i++) {
do {
System.out.printf("Enter grade %d: ", i + 1);
grades[i] = keyboard.nextInt();
} while (!wrongValue(grades[i]));
total += grades[i];
}
double average = total / 6.0;
System.out.printf("1st grade is %d which is %s%n", grades[0], letterGrade(grades[0]));
System.out.printf("2nd grade is %d which is %s%n", grades[1], letterGrade(grades[1]));
System.out.printf("3rd grade is %d which is %s%n", grades[2], letterGrade(grades[2]));
System.out.printf("4th grade is %d which is %s%n", grades[3], letterGrade(grades[3]));
System.out.printf("5th grade is %d which is %s%n", grades[4], letterGrade(grades[4]));
System.out.printf("6th grade is %d which is %s%n", grades[5], letterGrade(grades[5]));
System.out.printf("total average = %.1f which is %s%n", average,
letterGrade((int) average));
}
最后,我根据您发布的逻辑假设,当值有效时, wrongValue
实际上返回true
(因此方法名称似乎是向后的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.