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