2014-04-04 143 views
0

有人请向我解释我的构造函数方法有什么问题?我尝试了一百万种不同的东西,但似乎没有任何工作。我应该创建一个类(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

你在哪里设置牌号表示如果您不使用该构造函数,则传递给ScanArray(int等级),为什么使用它以及如何创建ScanArray对象。你有关于构造函数如何在java中工作的信息 – vikeng21

回答

0

添加默认构造函数类

public ScanArray(){ 


} 

既然您已经定义了一个构造ScanArray类的参数,编译器不会自动生成默认的无参数的构造函数。请添加它手动

其他方式只是改变你构建ScanArray比如像新的一样ScanArray(5);

0

从构造函数中删除的说法,顺便只是

public ScanArray(){} 
0

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

0
public ScanArray() 
{ 
} 

使用上述或删除构造

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

检查了这一点还是需要传递整型数组来获得最高值和最低值。

0

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

public ScanArray(int grades) 
{ 
} 

您必须添加明确的no-argument constructor如果你曾经打算用它在你的代码:

public ScanArray() 
{ 
} 
相关问题