Java program won't compile
I'm making this program under jgrasp and I'm getting an error. I have checked the spelling and the grammar of my program and it seems to be correct. Please help me开发者_运维知识库 -- is there something I'm missing that's causing all my errors?
import javax.swing.*;
public class Testscore
{
public static void main(String[] args)
{
int numberofTests = 0;
double grade = new double[numberofTests];
double startgrade = 0;
int x = 1 ;
String strInput;
// Get how many tests are used
strInput = JOptionPane.showInputDialog(null, "How many tests do you have? ");
numberofTests = Integer.parseInt(strInput);
grade = new double[(int) numberofTests];
do
{
for (int index = 0; index < grade.length; index++)
{
strInput = JOptionPane.showInputDialog(null, "Enter Test Score." + (index + 1));
grade = Double.parseDouble(strInput);
if (grade[index] < 0 || grade[index] > 100 )
{
try
{
throw new InvalidTestScore();
x=2;
}
catch (InvalidTestScore e)
{
e.printlnStackTrace();
system.out.println ("Choose a test score between 0 and 100");
}
}
}
}
while (x==1);
for (int index = 0; index < grade.length; index++ )
{
startgrade += grade[index];
}
average = startgrade/grade.length;
System.out.print("The average is: " + average);
}
}
Here are the errors I am getting.
Testscore.java:12: incompatible types
found : double[]
required: double
double grade = new double[numberofTests];
^
Testscore.java:25: incompatible types
found : double[]
required: double
grade = new double[(int) numberofTests];
^
Testscore.java:30: double cannot be dereferenced
for (int index = 0; index < grade.length; index++)
^
Testscore.java:35: array required, but double found
if (grade[index] < 0 || grade[index] > 100 )
^
Testscore.java:35: array required, but double found
if (grade[index] < 0 || grade[index] > 100 )
^
Testscore.java:39: cannot find symbol
symbol : class InvalidTestScore
location: class Testscore
throw new InvalidTestScore();
^
Testscore.java:43: cannot find symbol
symbol : class InvalidTestScore
location: class Testscore
catch (InvalidTestScore e)
^
Testscore.java:46: package system does not exist
system.out.println ("Choose a test score between 0
and 100");
^
Testscore.java:53: double cannot be dereferenced
for (int index = 0; index < grade.length; index++ )
^
Testscore.java:56: array required, but double found
startgrade += grade[index];
^
Testscore.java:59: cannot find symbol
symbol : variable average
location: class Testscore
average = startgrade/grade.length;
^
Testscore.java:59: double cannot be dereferenced
average = startgrade/grade.length;
^
Testscore.java:61: cannot find symbol
symbol : variable average
location: class Testscore
System.out.print("The average is: " + average);
^
13 errors
On line 12, try changing
double grade = new double[numberofTests];
to
double[] grade = new double[numberofTests];
All of the subsequent errors appear to be consequences of the compiler thinking that grade
is a double
instead of an array of them. For example, the mention of "dereferencing" refers to indexing into an array; it's not reasonable to index into a scalar double
.
The compiler is pretty helpful, it tells you what line you have an error on, and what the error is.
The first error is on line 12 and tells you that you've assigned an array reference to something that's not an array, you should change
double grade = new double[numberofTests];
to
double grade[] = new double[numberofTests];
The next one, on line 25 is similar.
The next 3 errors are because of the two previous ones since you declared grade
as just a double but later on try to use it as an array.
The error on line 39 Testscore.java:39: cannot find symbol
symbol : class InvalidTestScore
Means that the compiler cannot find your InvalidTestScore class - where is it ? You should compiler that class as well.
The error on line 46 is that system.out.println
should be System.out.println
(capital S in System)
The error on line 59 says that there is no variable named average
You can define it as the result of the expression you have there, so just change average = startgrade/grade.length;
to double average = startgrade/grade.length;
精彩评论