0

So i got this program which sets subject, and grades it.

now i got this piece of code:

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;
    }
}

and i got this piece of code to run it:

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

    }
}

now in the first code, the lenght of the arrays is set by the variable 'aantalvakken', but when i run my program, and print the lenght of te array it says 0.

how can i set the variable aantalvakken to set the array length

3 Answers 3

1

Pass aantalvakken value to constructor. And create ArrayList's depends on aantalvakken at constructor.

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];
    }
Sign up to request clarification or add additional context in comments.

Comments

0
private int aantalvakken;

is not initialized and therefore 0 by default.

Comments

0

try using static variables like below, initialize the variable(aantalvakken) how much array length you want.

public static final int aantalvakken;

or

public static final int aantalvakken=10;

1 Comment

Please don't advice hard coding.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.