我差不多已经完成了这个任务,但是有两件事让我在代码中陷入困境。 当我查询用户的测试分数时,如果分数不在0-100范围内,我不想接受它,然后告诉他们为什么要求另一个输入。 我也想在他们的平均分数旁边打印他们平均的字母等级。 由于某些原因,当我尝试检查以确保输入的分数在0-100之内时,我的If逻辑语句不起作用。 此外,我不知道如何获得打印字母等级,但我没有得到任何错误输出,所以我认为我在正确的轨道上。我认为我可以主要在我的while循环中使用指针来检查数字是否在0-100的范围内。我将不胜感激。 这里是我的代码:验证用户输入
import java.text.DecimalFormat;
import java.util.Scanner;
public class GradeReport
{
String name;
int score1, score2, score3;
double average;
String grade;
public GradeReport() //creates the first constructor
{
Scanner sc = new Scanner (System.in);
System.out.println ("Enter student's name: ");
name = sc.nextLine();
System.out.println ("Enter first grade: "); //try while loops to get grade in between 0-100
score1 = sc.nextInt();
while
(score1 <0 || score1 > 100);
System.out.println("please enter a grade 0-100"); //checks that score is inclusive 1-100
System.out.println ("Enter second grade: ");
score2 = sc.nextInt();
while
score2 <0 || score2 > 100;
System.out.println("please enter a grade 0-100");//checks that score is inclusive 1-100
System.out.println ("Enter third grade: ");
score3 = sc.nextInt();
while
score3 <0 || score3 >100;
System.out.println("please enter a grade 0-100");//checks that score is inclusive 1-100
}
public GradeReport (String v1, int v2, int v3, int v4)
{
name = v1; //these are to initialize the variables so that I don't get null for the second set of results.
score1 = v2;
score2 = v3;
score3 = v4;
}
public void calculateAvg()
{
average = (double)((score1 + score2 + score3)/3.0);
}
public String calculateGrade()
{
if (average >= 90)
grade = "A";
else if (average >= 80)
grade = "B";
else if (average >= 70)
grade = "C";
else if (average >= 60)
grade = "D";
else
grade = "F";
return grade;
}
public String toString()
{
DecimalFormat fmt = new DecimalFormat ("0.00"); //to format average to 2 decimal places
String gradeReport = name + "\n " + Double.toString(score1) + "\t" + Double.toString(score2)+ "\t" + Double.toString(score3) + "\n" + fmt.format(average) + grade;
return gradeReport;
}
public static void main (String[] args)
{
GradeReport gr1 = new GradeReport();
GradeReport gr2 = new GradeReport("Col Een", 76, 76, 75);
gr1.calculateAvg();
gr1.calculateGrade();
gr2.calculateAvg();
gr2.calculateGrade();
System.out.println(gr1);
System.out.println(gr2);
}
}
风格提示+1和变量命名 – jball 2010-10-26 20:16:26
谢谢atk。我同意jball的观点,你做了一个非常好的彻底的工作来解释所有这些。 – Josh 2010-10-27 02:02:14