Archief - [PROG]-[JAVA] Ordenen van [x][x] arrays

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Epyon

Legacy Member
Ik moet een klein appletje schrijven om gegevens van studenten en werknemers bij te houden. Deze worden via textfields ingevoerd en in een array geplaatst (uiteraard afhankelijk of het studenten- dan niet werknemergegevens zijn).
De twee array's zijn meervoudig (matrices dus) en bevatten 7 (0 inclusief) kolommen en maximaal 50 rijen.

Het volgende probleem stelde zich: ik moet een subroutine schrijven die in kolom 5 van iedere rij naar een bepaalde waarde zoekt (in dit geval de string "3"). Indien deze waarde gevonden wordt moet die volledige rij naar een nieuwe array gekopieerd worden. Maw, ik poog een subroutine te schrijven die de eerste array's kan sorteren op basis van een bepaalde waarde uit één kolom.

Hieronder vind je een uittreksel van mijn code (het is een handler, het sorteren mag pas gebeuren als er op een knop gedrukt wordt). De code wordt succesvol gecompiled, maar de uitvoering lukt niet.
Code:
public class Knop3handler implements ActionListener {

public void actionPerformed( ActionEvent e ) {
  	for( int i=0; i < studentenRij.length; i++ ){ 
  		if( studentenRij[i][5] == "3"){ //scannen in gegevensarray studenten, kolom 5
				for (int kol=0; kol < 7; kol++ ){ //kolommen kopieren
  				rangeerRij[rij][kol] = studentenRij[i][kol];
  			}
  			rij=rij+1;  //rij wordt geinitialiseerd als 0, zorgt ervoor dat de nieuwe array logisch wordt opgebouwd (rij per rij) 				
  		}
  	}
  	repaint();  		
  }
  }

Iemand een idee? Als het nodig is gooi ik mijn volledige code wel online, het is echter wat lijvig (naar mijn bescheiden normen toch :) ). Een andere methode om de array te ordenen op basis van een waarde in een bepaalde kolom is ook welkom.

CyberOps

Legacy Member
alst effectief een String is dat je zoekt, doe het even als volgt:
in plaats van
if( studentenRij[5] == "3")
doe
if(String.valueOf(studentenRij[5]).equals("3"))

khebt wel nog niet uitgeprobeerd hier, laat mij iets weten of't lukt ;-)

killgore

Legacy Member
rangeerRij[rij] = (StringBuffer)(studentenRij.clone());

???

(of String ipv StringBuffer ffcourse)

edit. en idd: strings niet letterlijk vergelijken, maar via equals!

Epyon

Legacy Member
Idd, het probleem lag dus bij het vergelijken, dat moest equals() worden. De nullpointers waar ik last van had zijn opgelost door if (studentenRij[0] != null) toe te voegen waardoor er niet meer met null's werd vergeleken (thx Bizzie ;) ).

sys4096

Legacy Member
Je kan ook gemakkelijk null-pointers voorkomen door in dit geval uw vergelijking om te keren...

if("3".equals(String.valueOf(studentenRij[5])))
{
...
}

In dit geval dient er dus niet voor null getest te worden.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan