2014-12-05 137 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

相關問題