Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

java foutmelding

Bill Gates
3 antwoorden
  • Als ik onderstaande code uitvoer dan krijg ik deze foutmelding:
    [b:7b95739b2e]Exception in thread "main" java.lang.OutOfMemoryError: Java heap space[/b:7b95739b2e]


    [code:1:7b95739b2e]
    import javax.swing.JOptionPane;

    /**
    *
    *
    */
    public class Inzend2 {
    public static void main(String[] args) {

    int cijfer = 8;
    int[][] BlastTable = new int[cijfer][cijfer];
    for (int i = 0; i < cijfer; i++) {
    for (int j = 0; j < cijfer; j++)
    BlastTable[i][j] = 32 - j - i * cijfer;
    }
    printarray(BlastTable);

    System.exit(0);
    }

    public static void printarray(int[][] BlastTable) {

    int cijfer = BlastTable.length;

    String table = "";
    for (int i = 0; i < cijfer ; i++) {


    for (int j = 0; j < cijfer; j++) {
    table += BlastTable[i][j] + " " ;
    table += table + " " + "
    ";
    }
    }

    JOptionPane.showMessageDialog(null, table, " BlastTable ", JOptionPane.INFORMATION_MESSAGE);
    }
    }
    [/code:1:7b95739b2e]

    Wie kan mij vertellen wat hier mis gaat ?
  • In je for-loop in de printarray methode bouw je elke iteratie een nieuwe string op, doordat je een String achter je bestaande String (table) plakt.

    In Java houdt dit in dat hij telkens een nieuwe string in het geheugen aanmaakt. Normaal komt het geheugen van de oude, niet meer gebruikte Strings tijdens het verloop van het programma weer vrij (garbage collection heet dit). In jouw geval krijgt Java daar echter geen kans toe omdat hij 'druk bezig' is met de for-loop.

    Als je veel Strings in Java aan elkaar wilt plakken, kan je het beste een StringBuilder (zie Java API) gebruiken. Deze gaat beter om met het plakken van Strings aan elkaar. In jouw geval zou de printarray methode er dan zo uit zien:

    [code:1:b1c55aa00e]public static void printarray(int[][] BlastTable) {

    int cijfer = BlastTable.length;

    StringBuilder table = new StringBuilder();

    for (int i = 0; i < cijfer ; i++) {
    for (int j = 0; j < cijfer; j++) {
    table.append(BlastTable[i][j]);
    table.append("
    ");
    }
    }

    JOptionPane.showMessageDialog(null, table.toString(),
    " BlastTable ", JOptionPane.INFORMATION_MESSAGE);
    }[/code:1:b1c55aa00e]
  • bedankt voor je snelle antwoord.
    Het wordt nu alleen horizontaal weergegeven in een hele lange strook.

    Wat moet ik aanpassen om 8 getallen horizontaal en 8 verticaal te krijgen ?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.