Arrayproblemme

sahra

Mitglied
Hallo Leute,

ich habe schwierigkeit wo man bis 5 auffüllen soll. kann mir jemand ein tipp geben?

A schoolclass (in our particular “familiar” school) has at most 15 and at least 5 pupils. The constructor
has to check whether the parameter pupils has a proper amount of pupils. If there are not
enough pupils some “dummy” pupils will be added (you can give each of them a number). If
the parameter has more pupils, only the first 15 will be accepted!


Java:
if(schueler.length <5){
			for(int i = 0; i < 5; i++){
				this.schueler= schueler;
			}
		}else if(schueler.length > 15){
			for(int i = 0; i < 15; i++){
				this.schueler= schueler;
			}
		}else {
			this.schueler = schueler;	
		}

danke vielmals
Sahra
 

sahra

Mitglied
wäre das vieleicht eine korrekte möglichkeit?

Java:
if(schueler.length <5){
			
				do{
					this.schueler= schueler;
				}
				while(this.schueler.length <4);
			
		}
 
N

nillehammer

Gast
Der Code macht keinen Sinn. "schueler" ist ja offensichtlich ein Array. Also macht es keinen Sinn, die Variable in den for-Schleifen mehrfach zu zuweisen. Wenn Du schon einen Array übergeben bekommst, kannst Du ihn direkt in Deine Variable kopieren. In einem Konstruktor sieht das ungefähr so aus:
Java:
private static final int MIN_SIZE = 5;
private static final int MAX_SIZE = 15;
private Schueler[] schuelers;

public Klasse(final Schueler[] schuelers) {

  if (schuelers.length < MIN_SIZE) {
    this.schuelers = new Schueler[MIN_SIZE];
    System.arraycopy(schuelers, 0, this.schuelers, 0, schuelers.length);
    //.. Rest mit Dummies auffüllen
  }
  //.. schuelers.length > MAX_SIZE: entsprechend ausprogrammieren

  //.. Normalfall schuelers.length innerhalb der erlaubten Spanne: auch ausprogrammieren. Ist der einfachste Fall. Hier kann das Array direkt kopiert werden.
}
 
Zuletzt bearbeitet von einem Moderator:
N

nillehammer

Gast
Java:
if(schueler.length <5){
            
                do{
                    this.schueler= schueler;
                }
                while(this.schueler.length <4);
            
}
Das macht doch auch keinen Sinn. Lies Dir Deinen Code mal durch und übersetz ihn inst Deutsche. Dann heißt das: Wenn länge kleiner 5 dann gehe in die Schleife, weise hier erstmal die Variable schueler zu und prüfe dann ob länge sogar kleiner 4. Falls nicht fertig, falls ja, weise schueler nochmal zu und prüfe wieder. Dann bist du in einer Endlosschleife einer unnötigen Variablenzuweisung, weil sich schueler.length während des Schleifendurchlaufs nicht ändert.
 

Oben