Meddelande

Minska
No announcement yet.

Behöver hjälp med mina arrayer

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Behöver hjälp med mina arrayer

    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.

    Kod:
    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

  • #2
    Vad är det som går fel?

    Sedan, i dina for-loopar som kollar barn som är under resp. över 4 år sätter du
    Kod:
    ageUnderFour = i
    följt av att du ökar den med 1 vilket innebär att ageUnderFour alltid kommer vara children.length vilket nog inte är tanken. Ta bort den raden.

    Kommentera

    Working...
    X