2014-12-05 145 views
0

所以我得到了这个设置主题的程序,并对它进行分级。在创建对象之前设置实例变量

现在我得到这一段代码:

package ectsmonitor; 

import java.util.Scanner; 
import java.util.stream.IntStream; 

/** 
* 
* @author JasperF 
*/ 
public class ECTSMonitor { 

    private int aantalvakken; 
    private final double voldoende = 5.5; 
    private String[] vak = new String[aantalvakken]; 
    private Scanner input = new Scanner(System.in); 
    private int[] ECTS = new int[aantalvakken]; 
    private double[] Cijfer = new double[aantalvakken]; 
    private int totaalECTS; 

    /** 
    * @param args the command line arguments 
    */ 

    /** 
    * Asks for amount of Subjects, and sets instance variable for size of 
    * Arrays 
    */ 
    public void setSubjects() { 
     //System.out.println("Hoeveel vakken heb je?"); 
     //aantalvakken = input.nextInt(); 
     System.out.println(vak.length); 
     for (int x = 0; x < getAantalvakken(); x++) { 
      System.out.println("Voer de naam in van je vak!"); 
      vak[x] = input.next(); 
      System.out.println("Voer het aantal punten in voor " + vak[x]); 
      ECTS[x] = input.nextInt(); 
      System.out.println("Vak Toegevoegd!!"); 
     } 

    } 

    public void setCijfer() { 
     for (int x = 0; x < vak.length; x++) { 
      System.out.println("Wat is je Cijfer voor " + vak[x] + "?"); 
      Cijfer[x] = input.nextDouble(); 
      System.out.println("Voor het vak " + vak[x] + "heb je als cijfer ingevuld " + Cijfer[x]); 
     } 

    } 

    public void Checkscore() { 
     for (int x = 0; x < vak.length; x++) { 
      if (Cijfer[x] >= voldoende) { 
       System.out.println("vak:" + vak[x] + "\t\t\t\t Cijfer: " + Cijfer[x] + "ECTS behaald: " + ECTS[x]); 
      } else { 
       System.out.println("vak:" + vak[x] + "\t\t\t\t Cijfer: " + Cijfer[x] + "ECTS behaald: 0"); 
      } 

     } 

    } 

    public void BAS() { 
     totaalECTS = IntStream.of(ECTS).sum(); 

     if (totaalECTS < (totaalECTS * (5/6))) { 
      System.out.println("PAS OP!!: Je ligt op schema voor een BAS!"); 
     } else { 
      System.out.println("Gefeliciteerd!!: Je bent op weg naar je Propodeuse!!"); 
     } 
    } 

    /** 
    * @return the aantalvakken 
    */ 
    public int getAantalvakken() { 
     return aantalvakken; 
    } 

    /** 
    * @param aantalvakken the aantalvakken to set 
    */ 
    public void setAantalvakken(int aantalvakken) { 
     this.aantalvakken = aantalvakken; 
    } 
} 

和我得到这一段代码来运行它:

public class Run { 

    /** 
    * 
    * @author JasperF 
    * @param args 
    */ 
    public static void main(String[] args) { 


     ECTSMonitor mon = new ECTSMonitor(); 


     mon.setSubjects(); 
     mon.setCijfer(); 
     mon.Checkscore(); 
     mon.BAS(); 

    } 
} 

现在在第一代码,所述阵列的lenght被设定由变量'aantalvakken', ,但是当我运行我的程序,并打印te数组的长度它说0. 0.

如何设置变量aantalvakken设置数组长度

回答

1

将aantalvakken值传递给构造函数。并且在构造函数中创建ArrayList的依赖于aantalvakken。

public class ECSTMonitor {   
    private int aantalvakken; 
    private final double voldoende = 5.5; 
    private String[] vak; 
    private Scanner input = new Scanner(System.in); 
    private int[] ECTS; 
    private double[] Cijfer; 
    private int totaalECTS; 

    public ECSTMonitor(int aantalvakken) { 
     this.aantalvakken = aantalvakken; 
     vak = new String[aantalvakken]; 
     ECTS = new int[aantalvakken]; 
     Cijfer = new double[aantalvakken]; 
    } 
0
private int aantalvakken; 

未初始化,因此默认为0

0

尝试使用下面的静态变量,初始化变量(aantalvakken)你想要的数组长度。

public static final int aantalvakken; 

public static final int aantalvakken=10; 
+0

请不要指点硬编码。 – 2014-12-05 13:02:26

相关问题