无法应用构造函数类

时间:2014-04-04 11:14:04

标签: java arrays constructor

有人可以向我解释一下构造函数方法有什么问题吗?我尝试了一百万种不同的东西,但似乎没有任何效果。我应该创建一个类(ScanArray),它包含一个构造函数和两个方法,用于查找在主类中创建的数组的最大值和最小值。这是我到目前为止所拥有的。

import java.util.Scanner;

public class Assign7_Polk {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int[] midTerm1 = new int[8];
        int[] midTerm2 = new int[8];
        int[] finalExam = new int[8];
        int[] grades = new int[8];

        for (int i = 0; i < midTerm1.length; i++) {
            System.out.println("Enter the 8 Mid Term 1 grades: ");
            midTerm1[i] = input.nextInt();
        }
        for (int i = 0; i < midTerm2.length; i++) {
            System.out.println("Enter the 8 Mid Term 2 grades: ");
            midTerm2[i] = input.nextInt();
        }
        for (int i = 0; i < finalExam.length; i++) {
            System.out.println("Please enter 8 Final Exam grades: ");
            finalExam[i] = input.nextInt();
        }
        for (int i = 0; i < grades.length; i++) {
            grades[i] = (midTerm1[i] + midTerm2[i] + finalExam[i]);
        }
    }
}

class ScanArray {

    int Max = 0;

    public ScanArray(int grades) {}

    int FindMax(int[] grades) {
        int Max = grades[0];
        for (int i = 1; i < grades.length; i++) {
            if (grades[i] > Max) {
                Max = grades[i];
            }
        }
        return Max;
    }

    int FindMin(int[] grades) {
        int Min = grades[0];
        for (int i = 1; i > grades.length; i++) {
            if (grades[i] < Min) {
                Min = grades[i];
            }
        }
        return Min;

        ScanArray findarray = new ScanArray();

        int highest = findarray.FindMax();
        int lowest = findarray.FindMin();

        System.out.println("The highest grade is " + highest);
        System.out.println("The lowest grade is " + lowest);
    }
}

5 个答案:

答案 0 :(得分:0)

将默认构造函数添加到您的类

public ScanArray(){


}

由于您已使用参数为ScanArray类定义了构造函数,因此Compiler不会自动生成默认的no-args构造函数。请手动添加

其他方式只是改变构建ScanArray实例的方式,例如新ScanArray(5);

答案 1 :(得分:0)

从构造函数中删除参数,只需

public ScanArray(){}

答案 2 :(得分:0)

只需删除构造函数public ScanArray(int grades) - 它什么都不做,编译器会自动为你添加默认的无参数构造函数。

答案 3 :(得分:0)

    public ScanArray()
{
}

使用上面的或删除构造函数

int highest = findarray.FindMax();//pass integer array
int lowest = findarray.FindMin();//pass integer array

检查一下你仍需要传递整数数组以获得最高和最低值。

答案 4 :(得分:0)

当您定义默认no-argument constructor以外的构造函数时,Java不会自动将默认构造函数添加到您的类中。所以在这种情况下,因为您使用参数定义了构造函数:

public ScanArray(int grades)
{
}

如果您要在代码中使用它,则必须明确添加no-argument constructor

public ScanArray()
{
}