Hoe tel je de elementen van een array in java

Stel dat ik de array heb

int theArray = new int[20];

De lengte van de array is 20 maar de telling is 0. Hoe kan ik de telling krijgen?


Antwoord 1, autoriteit 100%

Wat bedoel je met ‘de telling’? Het aantal elementen met een waarde die niet nul is? Je zou ze gewoon moeten tellen.

Er is geen onderscheidtussen die array en een array die explicietis ingesteld met nulwaarden. Deze arrays zijn bijvoorbeeld niet te onderscheiden:

int[] x = { 0, 0, 0 };
int[] y = new int[3];

Arrays in Java hebben altijd een vaste grootte – toegankelijk via het veld length. Er is geen concept van “de hoeveelheid van de array die momenteel in gebruik is”.


Antwoord 2, autoriteit 66%

Herhaal er doorheen en tel de elementen die niet nul zijn:

int counter = 0;
for (int i = 0; i < theArray.length; i ++)
    if (theArray[i] != null)
        counter ++;

Dit kan worden opgeknapt door for:each lussen en dergelijke te gebruiken, maar dit is de jist.

Ofwel dat, of een teller behouden en telkens wanneer u een element toevoegt, deze verhogen.


Antwoord 3, autoriteit 50%

Wat ik denk dat je misschien wilt, is een ArrayList<Integer>in plaats van een array. Hiermee kunt u het volgende doen:

ArrayList<Integer> arr = new ArrayList<Integer>(20);
System.out.println(arr.size());

De uitvoer is 0.

Vervolgens kun je dingen aan de lijst toevoegen, en hij houdt de telling voor je bij. (Het zal ook de grootte van de backing-opslag vergroten als je dat nodig hebt.)


Antwoord 4, autoriteit 19%

  1. Je code wordt niet gecompileerd, het moet int [] theArray = new int[20];;
  2. zijn

  3. U kunt de arraylengte krijgen als theArray.length;
  4. Voor primitieve typen wordt de array geïnitialiseerd met de standaardwaarden (0 voor int).
  5. Je kunt er Integer [] theArray = new Integer[20];van maken en vervolgens geïnitialiseerde leden tellen zoals deze code doet:

    public int count(Object [] array) {
        int c = 0;
        for(Object el: array) { if(el != null) c++; }
            return c;
    }
    

Houd er rekening mee dat dit antwoord niet gaat over waarom je dit misschien nodig hebt en wat de beste manier is om te doen wat je wilt.


Antwoord 5, autoriteit 12%

Java heeft niet het concept van een “telling” van de gebruikte elementen in een array.

Hiervoor gebruikt Java een ArrayList. De Listwordt geïmplementeerd bovenop een array waarvan de grootte wordt aangepast wanneer de JVM besluit dat deze niet groot genoeg is (of soms wanneer deze te groot is).

Om de telling te krijgen, gebruikt u mylist.size()om een capaciteit (de onderliggende array-backing) te verzekeren, en gebruikt u mylist.ensureCapacity(20). Om van de extra capaciteit af te komen, gebruikt u mylist.trimToSize().


Antwoord 6, autoriteit 9%

Hier is geen ingebouwde functionaliteit voor. Deze telling is in zijn geheel gebruikersspecifiek. Houd een teller bij of wat dan ook.


Antwoord 7

Als je een array definieert, leg je een geheugenblok opzij voor alle items die je in de array wilt hebben.

Dit heeft een standaardwaarde, afhankelijk van het type arraylidtypes.

Wat je niet kunt doen, is het aantal items achterhalen dat je hebt ingevuld, behalve om het in je eigen code te volgen.


Antwoord 8

Je kunt voor elke lus a gebruiken en het aantal integere waarden tellen dat significant is. U kunt ook een ArrayList gebruiken die de provincie voor u bijhoudt. Telkens wanneer u objecten aan de lijst toevoegt of verwijdert, wordt de telling automatisch bijgewerkt. Als u de methode size() aanroept, krijgt u het huidige aantal elementen.


Antwoord 9

Als u een Array wilt hebben waarin u niet alle elementen toewijst, moet u uw eigen boekhouding doen om er zeker van te zijn hoeveel elementen u erin hebt geplaatst via een andere variabele. Als u dit wilt vermijden terwijl u ook een “array” krijgt die capaciteit kan vergroten na de eerste instantie, kunt u een ArrayList

maken

ArrayList<Integer> theArray = new ArrayList<Integer>();
theArray.add(5); // places at index 0
theArray.size(); // returns length of 1
int answer = theArray.get(0); // index 0 = 5

Vergeet niet om het bovenaan het bestand te importeren:

import java.util.ArrayList;

Antwoord 10

Als je aanneemt dat 0 geen geldig item in de array is, dan zou de volgende code moeten werken:

  public static void main( String[] args )
   {
      int[] theArray = new int[20];
      theArray[0] = 1;
      theArray[1] = 2;
      System.out.println(count(theArray));
   }
   private static int count(int[] array) 
   {
      int count = 0;
      for(int i : array)
      {
         if(i > 0)
         {
            count++;
         }
      }
      return count;
   }

Antwoord 11

Je kunt een array van booleans declareren met dezelfde lengte van je array:

true: wordt gebruikt
false: wordt niet gebruikt

en verander de waarde van hetzelfde celnummer in waar. Vervolgens kun je tellen hoeveel cellen er worden gebruikt door een for-lus te gebruiken.


Antwoord 12

Is het niet gewoon: System.out.println(Array.length);? Omdat dit is waar je naar op zoek bent.


Antwoord 13

int theArray[] = new int[20];
System.out.println(theArray.length);

Other episodes