Staafdiagram max/min

Status
Niet open voor verdere reacties.

Tjennne

Gebruiker
Lid geworden
22 apr 2008
Berichten
33
Ik heb een applet voor een staafdiagram, dat lukt nog wel, maar nu wil ik het kleinste en de grootste staaf een andere kleur geven dan de andere staven. Nu wilde ik daar een methoude printMaxMin() voor gebruiken, maar ik weet niet hoe ik hier dan de opdacht kan geven dat de kleinste en de grootste een bepaalde kleur moeten krijgen.
Dit is wat ik nu heb:

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class opgave2_2 extends Applet
{
  private int[] lengteRij = {144,98,117,130,172};
  private Staafdiagram staafdiagram = new Staafdiagram (lengteRij,30);
  private double maximum = lengteRij[0];
  private double minimum = lengteRij[0];

  public void paint(Graphics g)
  {
    staafdiagram.drukaf(g,70,200);
  }
}

public void init()
  {
     for (int i = 1; i<lengteRij.length; i++)
      {
         if(lengteRij[i]> maximum)
         maximum = lengteRij[i];
       }
      for(int i =1; i<lengteRij.lengthe;i++)
      {
        if(lengteRij[i]<maximum)
        minimum = lengteRij[i];
      }
  }
class Staafdiagram
{
    private int[] lengteRij;
    private int witruimte;

    public Staafdiagram( int[] lengteRij, int witruimte)
    {
      this.lengteRij=lengteRij;
      this.witruimte=witruimte;
    }

    public void drukaf(Graphics g, int x, int y)
    {
      int xPos = x, yPos = y;

      for (int i = 0; i<lengteRij.length; i++)
      {
        g.fillRect(xPos,yPos-20-lengteRij[i],10,lengteRij[i]);
        xPos += witruimte;
      }
      xPos=x;
      for(int i=0; i< lengteRij.length;i++)
      {
        String getalStr = ""+ lengteRij[i];
        g.drawString(getalStr, xPos, yPos);
        xPos += witruimte;
      }
    }
    public void printMaxMin()
    {


    }
}
 
Eerste even om denken dat je de goede variabelen gebruikt en geen typefouten maakt ;)

Code:
public void init()
  {
     for (int i = 1; i<lengteRij.length; i++)
      {
         if(lengteRij[i]> maximum)
         maximum = lengteRij[i];
       }
      for(int i =1; i<lengteRij.[COLOR="Red"]length[/COLOR];i++)
      {
        if(lengteRij[i]<[COLOR="Red"]minimum[/COLOR])
        minimum = lengteRij[i];
      }
  }

Wat je kan doen is ini de functie hierboven ipv de inhoud van de specifieke plaats in de array de locatie in de variabele te zetten.
dat doe je op de volgende manier:
Code:
minimum = i;

Vervolgens kan je de het instatiërenvan de staafdiagram pas doen in de paint waardoor je de minimum en de maximum mee kan geven.
Code:
private Staafdiagram staafdiagram; 
Staafdiagram = new Staafdiagram (lengteRij,30);
//het aanmaken van de variabele laten staan. 
//Het instantiëren verplaatsen naar de paintfunctie
Vervolgens maak je in de paint in de class staafdiagram 2 if statements (in de for-lus) die nagaan of de i overeenkomt met de de variabele minimum of met de variabele maximum.
Indien dat zo is, wijzig je de kleur, in dien het niet zo is, dan doe je niets.
 
Laatst bewerkt:
Ik heb nu het volgende, maar volgens mij heb ik dingen op verkeerde plaatsen staan...???


Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class opgave2_2 extends Applet
{
  private int[] lengteRij = {144,98,117,130,172};
  private double maximum = lengteRij[0];
  private double minimum = lengteRij[0];
  private Color kleur;

  public void paint(Graphics g)
  {
    private Staafdiagram staafdiagram;
    staafdiagram = new Staafdiagram (lengteRij,30);
    staafdiagram.drukaf(g,70,200);
    kleur = new Color(Color.black);
  }
}

public void init()
  {
     for (int i = 1; i<lengteRij.length; i++)
      {
         if(lengteRij[i]> maximum)
         maximum = lengteRij[i];
         kleur = Color.red;
       }
      for(int i =1; i<lengteRij.length;i++)
      {
        if(lengteRij[i]<minimum)
        minimum = lengteRij[i];
        kleur = Color.green;
      }
  }
class Staafdiagram
{
    private int[] lengteRij;
    private int witruimte;

    public Staafdiagram( int[] lengteRij, int witruimte)
    {
      this.lengteRij=lengteRij;
      this.witruimte=witruimte;
    }

    public void drukaf(Graphics g, int x, int y)
    {
      int xPos = x, yPos = y;

      for (int i = 0; i<lengteRij.length; i++)
      {
        g.setColour(kleur);
        g.fillRect(xPos,yPos-20-lengteRij[i],10,lengteRij[i]);
        xPos += witruimte;
      }
      xPos=x;
      for(int i=0; i< lengteRij.length;i++)
      {
        String getalStr = ""+ lengteRij[i];
        g.drawString(getalStr, xPos, yPos);
        xPos += witruimte;
      }
    }
    public void printMaxMin()
    {


    }
}
 
Wat denk je dan dat er op de verkeerde plaats staat?

Waarom maak je hier gebruik van een double?
Heeft dat volgens jou toegevoegde waarde?
Code:
  private double maximum = lengteRij[0];
  private double minimum = lengteRij[0];
 
Maar natuurlijk...

Krijg nu nog de volgende foutmelding:

"opgave2_2.java": Error #: 202 : 'class' or 'interface' expected at line 21, column 8

Wat betekent dit??
 
Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class opgave2_2 extends Applet
{
  private int[] lengteRij = {144,98,117,130,172};
  private double maximum = lengteRij[0];
  private double minimum = lengteRij[0];
  private Color kleur;

  public void paint(Graphics g)
  {
    [COLOR="Red"]private Staafdiagram staafdiagram;[/COLOR] //1 Je kan geen private / public declaraties in een functie doen. Dat kan alleen in de class zelf buiten functies.
    staafdiagram = new Staafdiagram (lengteRij,30);
    staafdiagram.drukaf(g,70,200);
    [COLOR="Red"]kleur = new Color(Color.black);[/COLOR] //2 Dit gaat niet lukken omdat als je een nieuwe kleur aanmaakt, je de int-waarde in Red/green/blue mee moet geven.
  }
[COLOR="Red"]}[/COLOR] //3 Hier sluit je de class dat moet dus niet hier, maar dat moet heelmaal op het eind gebeuren //deze dus weg.

public void init()
  {
     for (int i = 1; i<lengteRij.length; i++)
      {
         if(lengteRij[i]> maximum)
         maximum = lengteRij[i];
         kleur = Color.red;
       }
      for(int i =1; i<lengteRij.length;i++)
      {
        if(lengteRij[i]<minimum)
        minimum = lengteRij[i];
        kleur = Color.green;
      }
  }
class Staafdiagram
{
    private int[] lengteRij;
    private int witruimte;

    public Staafdiagram( int[] lengteRij, int witruimte)
    {
      this.lengteRij=lengteRij;
      this.witruimte=witruimte;
    }

    public void drukaf(Graphics g, int x, int y)
    {
      int xPos = x, yPos = y;

      for (int i = 0; i<lengteRij.length; i++)
      {
        g.setColour(kleur);
        g.fillRect(xPos,yPos-20-lengteRij[i],10,lengteRij[i]);
        xPos += witruimte;
      }
      xPos=x;
      for(int i=0; i< lengteRij.length;i++)
      {
        String getalStr = ""+ lengteRij[i];
        g.drawString(getalStr, xPos, yPos);
        xPos += witruimte;
      }
    }
    public void printMaxMin()
    {


    }
}
[COLOR="Red"]}[/COLOR] // Deze moet er nog bij


Zo geeft hij bij mij geen fouten meer:

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class test extends Applet {
    private int[] lengteRij = {144,98,117,130,172};
    private double maximum = lengteRij[0];
    private double minimum = lengteRij[0];
    private Color kleur;
    private Staafdiagram staafdiagram; [COLOR="Red"]//1[/COLOR]
    
    public void paint(Graphics g) {
        staafdiagram = new Staafdiagram(lengteRij,30);
        staafdiagram.drukaf(g,70,200);
        kleur = Color.BLACK; [COLOR="Red"]//2[/COLOR]
    }
    
    public void init() {
        for (int i = 1; i<lengteRij.length; i++) {
            if(lengteRij[i]> maximum)
                maximum = lengteRij[i];
            kleur = Color.red;
        }
        for(int i =1; i<lengteRij.length;i++) {
            if(lengteRij[i]<minimum)
                minimum = lengteRij[i];
            kleur = Color.green;
        }
    }
    class Staafdiagram {
        private int[] lengteRij;
        private int witruimte;
        
        public Staafdiagram( int[] lengteRij, int witruimte) {
            this.lengteRij=lengteRij;
            this.witruimte=witruimte;
        }
        
        public void drukaf(Graphics g, int x, int y) {
            int xPos = x, yPos = y;
            
            for (int i = 0; i<lengteRij.length; i++) {
                g.setColour(kleur);
                g.fillRect(xPos,yPos-20-lengteRij[i],10,lengteRij[i]);
                xPos += witruimte;
            }
            xPos=x;
            for(int i=0; i< lengteRij.length;i++) {
                String getalStr = ""+ lengteRij[i];
                g.drawString(getalStr, xPos, yPos);
                xPos += witruimte;
            }
        }
        public void printMaxMin() {
            
            
        }
    }
} [COLOR="Red"]//3[/COLOR]
 
Inderdaad, geen foutmeldingen meer!! Maar nu zijn alle staven groen....
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan