在创建对象之前设置实例变量

时间:2014-12-05 12:39:23

标签: java arrays oop

所以我得到了这个设定主题并对其进行评分的程序。

现在我得到了这段代码:

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();

    }
}

现在在第一个代码中,数组的长度由变量&#39; aantalvakken&#39;设置, 但是当我运行我的程序并打印te数组的长度时,它会显示0。

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

3 个答案:

答案 0 :(得分: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];
    }

答案 1 :(得分:0)

private int aantalvakken;

未初始化,因此默认为0

答案 2 :(得分:0)

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

public static final int aantalvakken;

public static final int aantalvakken=10;