我必须编写代码来查找成绩的最大,最小和平均。这就是我到目前为止所做的:
public class test
{
public static void main (String[] args)
{
double average, count = 0, sum = 0, grades, max=0, min=0;
final int = MAX_GRA = 0
final int = MIN_GRA = 0
Scanner scan = new Scanner (System.in);
System.out.print ("Enter the grades (999 to quit): "); //Taking input from the user
grades = scan.nextInt();
while (grades != 999) //A while loop that doubles count and adds the sum to grades
{
count++;
sum += grades;
System.out.println ("The sum so far is " + sum);
System.out.print ("Enter the grades (999 to quit): ");
grades = scan.nextInt();
}
System.out.println ();
if (count == 0) //An if statement that identifies if no numbers were entered
System.out.println ("No grades were entered.");
else //An else statement that computes that computes the average
{
average = (double)sum / count;
DecimalFormat fmt = new DecimalFormat ("0.##");
System.out.println ("The average grade is " + fmt.format(average));
}
}
}
有什么想法吗?我是一般的java和编码新手。谢谢你的时间!
答案 0 :(得分:1)
您可以尝试这样的事情:
int maxGrade = 0;
int minGrade = 10; // Set the highest possible grade.
while (grades != 999)
{
// If the current grade is greater that the maxGrade,
// set this value the maxGrade.
if(grades > maxGrade)
maxGrade = grades;
// If the current grade is less than the minGrade,
// set this value to the minGrade.
if(grades < minGrade)
minGrade = grades;
// Here you will place the rest of your code.
}
注意:尝试为变量使用更有意义的名称。这将使您的代码更具可读性,并且您可以更轻松地向代码读者传达您的意图和想法。例如,由于grades
会保留当前grade
的值,因此将其命名为grade
会更合理。
<强>更新强>
正如下面提到的那样,你可以使用Math
类的两种方法,以避免if
语句。
while (grades != 999)
{
maxGrade = Math.max(maxGrade, grades);
minGrade = Math.min(minGrade, grades);
}
答案 1 :(得分:0)
我会更改原始代码中的某些内容,并按此放置。
public class Grades {
// MODIFIERS (final, private, protected, static, etc.) type (int, double,
// float, Object, etc.) name [= initialValue];
private final static double END_GRADES = 999;
public static void main(String[] args) {
double count, sum, grades, max, min;
Scanner scan = new Scanner(System.in);
// Initialized data.
count = 0;
sum = 0;
max = 0;
min = 0;
do {
System.out.println("Enter next grade ("+(int)END_GRADES+" to quit):");
grades = scan.nextDouble();
if (grades != END_GRADES) {
if (count == 0) { // First grade is always min.
min = grades;
}
sum = sum + grades;
count++;
System.out.println("The sum so far is: " + sum);
if (max < grades) { // New max??
max = grades;
}
if (min > grades) { // New min??
min = grades;
}
}
} while (grades != END_GRADES);
if (count != 0) {
System.out.println("The average grade is: " + (sum / count));
System.out.println("The max grade is: " + max);
System.out.println("The min grade is: " + min);
} else {
System.out.println("No grades were entered.");
}
}
}
答案 2 :(得分:0)
看起来你走了一半的答案,但我认为你错过了 min , max 值,因为你已经计算了平均值和总和。
首先,你需要添加两条指令来更新你的最大和最小变量等级持有者,简短的方法是使用:
Math#max
简写比较返回参数的最大值。Math#min
简写比较返回参数的最小值。但您必须删除final
和MAX_GRA
前面的MIN_GRA
修饰符,因为这些实例变量需要在while
循环的每次迭代中更新,以便他们得到用户输入的成绩或保持自己的价值。
然后您应该处理变量声明,以便进行比较并且这样做,您可以将min值设置为整数范围内的最大值,反之亦然。
最后,您需要添加print语句,以显示最大/最小值以及您的平均成绩:
public class MinMaxAndAverageCalculator
{
public static void main (String[] args)
{
double average, count = 0, sum = 0, max=0, min=0;
int MAX_GRA = Integer.MIN_VALUE;
int MIN_GRA = Integer.MAX_VALUE;
int grade;
Scanner scan = new Scanner (System.in);
System.out.print ("Enter the grades (999 to quit): "); //Taking input from the user
grade = scan.nextInt();
while (grade != 999) //A while loop that doubles count and adds the sum to grades
{
count++;
sum += grade;
MAX_GRA = Math.max(grade, MAX_GRA);
MIN_GRA = Math.min(grade, MIN_GRA);
System.out.println ("The sum so far is " + sum);
System.out.print ("Enter the grades (999 to quit): ");
grade = scan.nextInt();
}
if (count == 0) //An if statement that identifies if no numbers were entered
{
System.out.println("No grades were entered.");
}
else //An else statement that computes that computes the average
{
average = (double) sum / count;
DecimalFormat fmt = new DecimalFormat ("0.##");
System.out.println ("The average grade is " + fmt.format(average));
System.out.println ("The maximum grade is " + MAX_GRA);
System.out.println ("The minimum grade is " + MIN_GRA);
}
}
}