构造函数不能应用于给定类型,并且应声明名称

时间:2015-01-19 19:58:07

标签: java arrays

这是我学校的myprogramminglab问题,我无法上班...... 它必须在一页上,这就是为什么我一起拥有它。

我的编译错误:

Driver.java:3: error: class TestScores is public, should be declared in a file named TestScores.java
public class TestScores
       ^
Driver.java:51: error: constructor TestScores in class TestScores cannot be applied to given types;
        TestScores TestScore = new TestScores();
                               ^
  required: double[]
  found: no arguments
  reason: actual and formal argument lists differ in length
2 errors

练习:

编写一个名为TestScores的类。类构造函数应该接受一个数组 测试分数作为其论据。该类应该有一个返回的方法 考试成绩的平均值。如果阵列中的任何测试分数为负数 或者大于100,该类应抛出IllegalArgumentException。

在名为Driver的程序中演示该类。 该程序应要求用户输入要计数的测试分数, 然后是每个单独的考试成绩。然后它应该得出这些分数的数组, 创建一个TestScore对象,并打印得分的平均值。

如果抛出IllegalArgumentException,主方法应该捕获它,打印“测试分数的值必须小于100且大于0”。并终止该计划。

我的代码:

import java.util.Scanner;

public class TestScores
{
    private double[] scoreArray;

    public TestScores(double[] test) throws IllegalArgumentException
    {
        scoreArray = new double[test.length];

        for (int i = 0; i < test.length; i++)
        {
            if (test[i] < 0 || test[i] > 100)

                throw new IllegalArgumentException("Test scores must have a value less than 100 and greater than 0.");

            else
                scoreArray[i] = test[i];
        }
    }

    public double getAverage()
    {
        double total = 0.0;

        for (int i = 0; i < scoreArray.length; i++)
            total += scoreArray[i];

        return (total / scoreArray.length);
    }


    public static void main(String[] args)
    {  
        int score = 0;
        int scores = 0;

        Scanner userInput = new Scanner(System.in);

        System.out.print("Enter number of test scores: ");
        score = userInput.nextInt();

        double[] scoreArray = new double[score];

        for (int i = 0; i <= score - 1; i++)
        {    
            System.out.print("Enter test score " + (i + 1)+ ": ");
            scoreArray[scores] = userInput.nextDouble();      
        }  

        TestScores TestScore = new TestScores();
        System.out.print(TestScore);
    }

}

4 个答案:

答案 0 :(得分:1)

确保将TestScores类保存在名为TestScores.java的文件中。此外,请确保正确使用您的构造函数。如果构造函数接受一个int数组,那么在调用它时将它传递给一个int数组。

TestScores testScore = new TestScores(scoreArray);

此外,按照惯例,变量名称应以小写字母开头。

答案 1 :(得分:0)

可能是程序启动时首先调用构造函数,并且没有双精度。错误。然后,您尝试在类上创建实例,而不在参数

中传递double

答案 2 :(得分:0)

您必须提供给实例:

TestScores TestScore = new TestScores(scoreArray);

因为你在类中有一个名为TestScores的构造函数,它接收一个数组,测试它并让我们知道!

答案 3 :(得分:0)

在创建类时请记住,总是为这些情况添加No-Args控制器

您的问题是您需要提供在构造函数

中指定的测试数组参数