【问题标题】:Constructor class cannot be applied构造函数类不能应用
【发布时间】:2014-04-04 11:14:03
【问题描述】:

有人可以向我解释一下我的构造方法有什么问题吗?我已经尝试了一百万种不同的东西,但似乎没有任何效果。我应该创建一个类 (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);
    }
}

【问题讨论】:

  • 如果您不使用该构造函数,您在哪里设置传递给 ScanArray(int Grades) 的成绩,为什么要使用它以及如何创建 ScanArray 对象。你有关于构造函数如何在 java 中工作的信息

标签: java arrays constructor


【解决方案1】:

为你的类添加默认构造函数

public ScanArray(){


}

由于您已经为 ScanArray 类定义了带参数的构造函数,编译器不会自动生成默认的无参数构造函数。请手动添加

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

【讨论】:

    【解决方案2】:

    从构造函数中移除参数,只需要

    public ScanArray(){}
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:
            public ScanArray()
        {
        }
        

        使用上面的或者去掉构造函数

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

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

        【讨论】:

          【解决方案5】:

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

          public ScanArray(int grades)
          {
          }
          

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

          public ScanArray()
          {
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多