![](/img/trans.png)
[英]Read in 3 exams.. outputting the student names, their grades, the average, and their letter grade. Nested Loops,
[英]I need to display a student's numerical mark in a class as well as their letter grade. My code does not output the letter. How can I fix this?
import java.io.*;
class finalGrade
{
//declare variables
String name;
double quizTotal = 0;
double midterm = 0;
double exam = 0;
double mark = 0;
char grade;
//initialize variables
public finalGrade (String nameStudent, double quizMark, double midtermMark, double examMark)
{
name = nameStudent;
quizTotal = quizMark;
midterm = midtermMark;
exam = examMark;
}
public double marks()
{
mark = ((exam * 0.25) + (midterm * 0.25) + (quizTotal * 0.50));
System.out.println((name) + ", your mark is " + (mark) + " and you get a(n) " + (grade));
if (mark >= 90)
{
return (grade) = 'A';
}
else if (mark >= 80 && mark < 90)
{
return (grade) = 'B';
}
else if (mark >= 70 && mark < 80)
{
return (grade) = 'C';
}
else if (mark >= 60 && mark < 70)
{
return (grade) = 'D';
}
else if (mark < 60)
{
return (grade) = 'F';
}
else
{
return (grade) = 'F';
}
}
}
class finalGradeTester
{
public static void main(String[] args)
{
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader sub = new BufferedReader(inStream);
finalGrade Student1 = new finalGrade("Student", 89, 100, 21);
finalGrade Student2 = new finalGrade("Student", 34, 21, 9);
finalGrade Student3 = new finalGrade("Student", 89, 100, 21);
finalGrade Student4 = new finalGrade("Student", 89, 100, 21);
finalGrade Student5 = new finalGrade("Student", 89, 100, 21);
Student1.marks();
Student2.marks();
}
}
这应该计算分数,两次测试占25%,而一次考试占50%。 它可以很好地用于计算,但是在显示字母等级时为空白。 我不知道该如何解决。 运行代码时得到的输出是:学生,您的分数是74.75,您得到一个(n)学生,您的分数是24.5,您得到一个(n)
它不显示字母等级。
您在计算grade
之前先进行打印。 另外,这里不需要返回任何内容。
public double marks()
{
mark = ((exam * 0.25) + (midterm * 0.25) + (quizTotal * 0.50));
if (mark >= 90)
{
grade = 'A';
}
else if (mark >= 80 && mark < 90)
{
grade = 'B';
}
else if (mark >= 70 && mark < 80)
{
grade = 'C';
}
else if (mark >= 60 && mark < 70)
{
grade = 'D';
}
else if (mark < 60)
{
grade = 'F';//This must be E
}
else
{
grade = 'F';
}
System.out.println((name) + ", your mark is " + (mark) + " and you get a(n) " + (grade));
}
同样,每次调用该方法时都没有理由计算mark
和grade
。 您可以使用私有方法计算成绩,然后从构造函数中调用它。
这是因为您返回了标记,而不是在System.out上也没有包含ot,如果标记<90,则无需重新验证,否则它将是A。
另外,类名具有大写字母,变量具有小写字母
import java.io.*;
class FinalGrade
{
//declare variables
String name;
double quizTotal = 0;
double midterm = 0;
double exam = 0;
double mark = 0;
char grade;
//initialize variables
public FinalGrade (String nameStudent, double quizMark, double midtermMark, double examMark)
{
name = nameStudent;
quizTotal = quizMark;
midterm = midtermMark;
exam = examMark;
}
public void marks()
{
mark = ((exam * 0.25) + (midterm * 0.25) + (quizTotal * 0.50));
if (mark >= 90)
{
grade = 'A';
}
else if (mark >= 80)
{
grade = 'B';
}
else if (mark >= 70)
{
grade = 'C';
}
else if (mark >= 60)
{
grade = 'D';
}
else
{
grade = 'F';
}
System.out.println((name) + ", your mark is " + (mark) + " and you get a(n) " + (grade));
}
}
class finalGradeTester
{
public static void main(String[] args)
{
InputStreamReader inStream = new InputStreamReader(System.in);
BufferedReader sub = new BufferedReader(inStream);
FinalGrade student1 = new FinalGrade("Student", 89, 100, 21);
FinalGrade student2 = new FinalGrade("Student", 34, 21, 9);
FinalGrade student3 = new FinalGrade("Student", 89, 100, 21);
FinalGrade student4 = new FinalGrade("Student", 89, 100, 21);
FinalGrade student5 = new FinalGrade("Student", 89, 100, 21);
student1.marks();
student2.marks();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.