我的程序打印语句有误
问题描述:
当我运行我的程序并选择0到100之间的数字时,它打印出我的答案错误。我的程序打印语句有误
Java控制台
----jGRASP exec: java TestScores How many tests do you have? 3 Enter grade for Test 1: 80 Enter grade for Test 2: 80 Enter grade for Test 3: 80 The average is: 26.666666666666668The average is: 53.333333333333336The average is: 80.0 ----jGRASP: operation complete.
import java.util.Scanner;
public class TestScores {
public static void main(String[] args)
{
int numTests = 0;
double[] grade = new double[numTests];
double totGrades = 0;
double average;
int check = 1;
Scanner keyboard = new Scanner(System.in);
System.out.print("How many tests do you have? ");
numTests = keyboard.nextInt();
grade = new double[(int) numTests];
for (int index = 0; index < grade.length; index++)
{
System.out.print("Enter grade for Test " + (index + 1) + ": ");
grade[index] = keyboard.nextDouble();
if (grade[index] < 0 || grade[index] > 100)
{
try
{
throw new InvalidTestScore();
}
catch (InvalidTestScore e)
{
e.printStackTrace();
}
break;
}
}
for (int index = 0; index < grade.length; index++) {
totGrades += grade[index];
average = totGrades/grade.length;
System.out.print("The average is: " + average);
}
}
}
public class InvalidTestScore extends Exception
{
public InvalidTestScore()
{
super(" Error: Enter a number between 0 and 100");
}
}
答
我将计算从循环内部到外部的和的语句移动到外部。
我的新代码是。
import java.util.Scanner;
公共类TestScores
{
public static void main(String[]args)
{
int numTests = 0;
double[] grade = new double[numTests];
double totGrades = 0;
double average;
int check = 1;
Scanner keyboard = new Scanner(System.in);
System.out.print("How many tests do you have? ");
numTests = keyboard.nextInt();
grade = new double[(int) numTests];
for (int index = 0; index < grade.length; index++)
{
System.out.print("Enter grade for Test " + (index + 1) + ": ");
grade[index] = keyboard.nextDouble();
if (grade[index] < 0 || grade[index]> 100)
{
try
{
throw new InvalidTestScore();
}
catch (InvalidTestScore e)
{
e.printStackTrace();
}
break;
}
}
for (int index = 0; index < grade.length; index++)
{
totGrades += grade[index];
}
average = totGrades/grade.length;
System.out.print("The average is: " + average);
}
}
公共类InvalidTestScore延伸异常 { 公共InvalidTestScore() { 超级(”错误:0和之间输入一个数字100" ); } }
您可以关闭我的帖子。
答
您打印计算平均循环内的平均水平。
仅在循环外打印。
答
您应该在循环中计算总和,然后(循环后)将其除以元素的数量。
我想让我的程序打印一行和正确的数量。 – lonesarah 2011-02-22 16:58:01
`尝试{thow new Ex(); } catch(Ex e){e.printStackTrace()}```````必须是我见过的例外中最令人震惊,令人难以置信的滥用行为之一。另外,你的格式是......我们只是说,明智地使用空白可以帮助你阅读,但是你可以做得更多。 – delnan 2011-02-22 17:02:19