Hoe maak je een methode die een array van gehele getallen neemt en het avg-nummer retourneert?

System.out.println(type integer);
int 1 = kb.nextInt();
System.out.println(type integer);
int 2 = kb.nextInt();
System.out.println(type integer);
int 3 = kb.nextInt();
System.out.println(type integer);
int 4 = kb.nextInt();
int [] integers = new int {1 + 2 + 3 + 4}
System.out.println(integers/numberofinputs?);

ja ik weet niet hoe ik de totale som moet delen door het aantal getallen in de array.

2
Er is zelfs geen enkele regel zonder een fout erin. Heb je niet eens geprobeerd iets te compileren?
toegevoegd de auteur Kapep, de bron

3 antwoord

Question:

hoe u een methode maakt die een array van gehele getallen gebruikt en de   gemiddelde nummer?

Answer:

public static double getAverage(int[] array)
{
    int sum = 0;
    for(int i : array) sum += i;
    return ((double) sum)/array.length;
}
3
toegevoegd
@Jonathan kan niet alleen casten naar een dubbel , omdat de functie is gedeclareerd om int te retourneren.
toegevoegd de auteur Matt Ball, de bron
@JonathanNewmuis Je hebt gelijk!
toegevoegd de auteur Eng.Fouad, de bron
maar toch wanneer ik deze code compileer niets output. Doe ik iets verkeerd
toegevoegd de auteur user1061354, de bron
Merk op dat dit de decimalen van het gemiddelde afknipt. Het "gemiddelde" van 2, 3 en 5 is bijvoorbeeld 3 in plaats van 3.3333 .... . Gegoten naar een double vóór het delen om truncatie te voorkomen.
toegevoegd de auteur Jon Newmuis, de bron

recursief

double getAverage ( int [ ] array )
{
    return ( double ) ( getSum ( array , 0 , array . length ) )/array . length ;
}

int getSum ( int [ ] array , int floor , int ceil )
{
    if ( ceil - floor < 1 ) { throw new RuntimeException ( ) ; }
    else if ( ceil - floor == 1 )
    {
         return array [ floor ] ;
    }
    else
    {
         return getSum ( floor , ( floor + ceil )/2 ) + getSum ( ( floor + ceil )/2 , ceil ) ;
    }
}
0
toegevoegd
... Heilige rotzooi. Ik zag dit antwoord niet aankomen.
toegevoegd de auteur Doug Swain, de bron

Om te proberen u in de goede richting te sturen, wilt u proberen dit in delen op te splitsen. Ik raad aan om een ​​lijst te maken van alle dingen die je moet doen om deze taak te voltooien.

  • Get the values to compute the average of, saving them into an array.
    • This will require knowing where the data is coming from (a file, typed, etc).
    • It may also require knowing how many values will be given when the program is run.
  • Go through the array one element of the time, computing the sum of all of the values.
    • You can do this by following Eng.Fouad's example.
  • Once you have the sum, simply divide by the amount of values that were input into the program. This is your final average.

Het grootste probleem lijkt te zijn dat je probeert de waarden van de gebruiker te krijgen. Je bent op de goede weg met een Scanner (ik neem aan van de standaardinvoer of de opdrachtregel) maar nu moet je meerdere waarden opslaan in een array (of een lijst of zoiets).

Ik zal u een voorbeeld geven met behulp van een array (dit vereist echter dat u weet hoeveel waarden er worden gegeven). OPMERKING - Deze compileert niet . Je moet de details invullen voordat je probeert om dit goed te laten werken.

Scanner scanner = ... ; # Fill in the '...'
int totalElements = 10;  # TODO - Determine what this value should be, or get it from the user
double[] values = new double[totalElements]; # Make an array with totalElements amount of slots
int counter = 0;

while (/* fill this in with scanner method to check for another double*/) {
    values[counter] = /* fill in with scanner method to read a double*/;
    /* fill in with a way to increase the counter by 1 */
}

Vanaf hier kunt u aan een functie werken om het gemiddelde te berekenen.

0
toegevoegd