Hej,
Jag har fastnat. Försöker skapa ett program som läser in antal dagis barn av användaren. Sen ha en array som samlar alla objekt (har en klass för det). Sen vill jag att barnen ska kopieras till nya arrayer beroende på åldern och det är där något går fel.
import java.util.Scanner;
public class ChildRegister {
// Instansvariabler
// Child lagrar "barnobjekt"
private Child[] children;
// Konstruktor som skapar minne för arrayen
public ChildRegister(int size) {
children = new Child[size];
}
// En metod som fyller arrayen med objekt och sätter värden
public void initialize(Scanner keyboard) {
// Loop så att vi vet hur många gånger vi ska fråga användaren om namn,
// födelseår
for (int i = 0; i < children.length; i++) {
System.out.println("Namn: ");
String name = keyboard.nextLine();
System.out.println("Ålder: ");
int age = keyboard.nextInt();
// rensa buffert
keyboard.nextLine();
children[i] = new Child(name, age);
}
}
public void printAboveFour() {
// Lokal variabel
int ageAboveFour = 0;
// Loop där antalet över eller lika med 4 läggs i ageAboveFour
for (int i = 0; i < children.length; i++) {
if (children[i].getAge() >= 4) {
ageAboveFour = i;
ageAboveFour++;
}
}
//Den nya arrayen storlek som den gamla med längden ageAboveFour
Child[] childrenAboveFour = new Child[ageAboveFour];
System.out.println("Följande " + "(" + childrenAboveFour.length
+ "st) barn är över eller exakt 4 år:");
//Kopierar de barn med rätt ålder till nya arrayen
for (int i = 0; i < children.length; i++) {
if (children[i].getAge() >= 4) {
Child child = children[i];
childrenAboveFour[i] = child;
}
// Skriver ut våran toString
System.out.println(childrenAboveFour[ageAboveFour].toString());
}
}
public void printUnderFour() {
// Lokal variabel
int ageUnderFour = 0;
for (int i = 0; i < children.length; i++) {
if (children[i].getAge() < 4) {
ageUnderFour = i;
ageUnderFour++;
}
}
// Vår nya array
Child[] childrenUnderFour = new Child[ageUnderFour];
// Skriver ut hur månag barn som är under fyra
System.out.println("Följande " + "(" + childrenUnderFour.length
+ "st) barn är under 4 år:");
for (int i = 0; i < children.length; i++) {
if (children[i].getAge() >= 4) {
Child child = children[i];
childrenUnderFour[i] = child;
}
}
for (int i = 0; i < childrenUnderFour.length; i++) {
System.out.println(childrenUnderFour[ageUnderFour].toString());
}
}
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
// Lokala variabler Antal personer som ska lagras
int nrOfChildren = 0;
// Läsa in antalet personer
System.out.println("Hur många barn ska registreras? ");
nrOfChildren = keyboard.nextInt();
keyboard.nextLine(); // Rensa buffert
ChildRegister childRegister = new ChildRegister(nrOfChildren);
// Anropar metoden initilize
childRegister.initialize(keyboard);
// Anropar våra print-metoder
childRegister.printUnderFour();
childRegister.printAboveFour();
}
}
Hoppas någon kan hjälpa mig att förstå (står varken i boken och vi har inte gått igenom detta)
/Alexandra