B.Joelene
B.Joelene

Reputation: 133

How to call an ArrayList

I'm trying to append all of numbers that the program generates, into an array.

I used ArrayList method. However i can't manage program to read arr elements.

import java.util.Random;
import java.util.ArrayList;
public class Numbers {
public ArrayList<Double> getNumbers( )
{
    Random getNum=new Random();
    ArrayList<Double> arr=new ArrayList<Double>(1000);

    int size=1000;
    for(int i=0;i<size;i++)
    {
        double gauss=getNum.nextGaussian()*15+70;
        arr.add(gauss);
    }
    System.out.println(arr);
    return arr;
}
}

Furthermore; i'm trying all generated numbers to be read via another method. (That part is the following)

How can the program read all generated numbers?

double [] numbers= StdIn.getNumbers();  // Stuck at here.

Is it possible to calling getNumbers method like that?

Upvotes: 0

Views: 15237

Answers (4)

LowLevel
LowLevel

Reputation: 1095

Numbers class

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public final class Numbers {

    private Numbers() {}

    public static List<Double> getArrayListOfNumbers() { // ArrayList
        List<Double> numbers = new ArrayList<>();
        for(double d : getArrayOfNumbers()) {
            numbers.add(d);
        }
        return numbers;
    }

    public static double[] getArrayOfNumbers() { // Array
        Random random = new Random();
        double[] numbers = new double[1000];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = random.nextGaussian() * 15 + 70;
        }
        return numbers;
    }
}

Test Drive:

import java.util.List;

public class TestDrive {
    public static void main(String[] args) {
        // Printing arrayList numbers
        List<Double> arrayListOfNumbers = Numbers.getArrayListOfNumbers();
        arrayListOfNumbers.stream().forEach(System.out::println);

        // Printing certain arrayList object
        System.out.println("\nArrayList #7: " + arrayListOfNumbers.get(7));
    }
}

Extra info:

Usually when there's need for fixed size/length (total values/objects), arrays are used (in your case it's 1000).

While ArrayList is a collection implementing interface List, which is used when there's no need for fixed size/length or when there's need for size/length flexibility.

Upvotes: 1

Turo
Turo

Reputation: 4914

You might think of something like that:

Initiate on object of your class and call the function

public class Numbers {
public ArrayList<Double> getNumbers( )
{
    Random getNum=new Random();
    ArrayList<Double> arr=new ArrayList<Double>(1000);

    int size=1000;
for(int i=0;i<size;i++)
{
    double gauss=getNum.nextGaussian()*15+70;
    arr.add(gauss);
}
return arr;
}

public static void main(String[] args) {
    Numbers n = new Numbers();
    List<Double> numbers = n.getNumbers();
    for (Double number : numbers) {
        System.out.println(number);
    }
}
}

Upvotes: 1

mahbubcsedu
mahbubcsedu

Reputation: 158

You can call from other class as bellow

import java.util.Random;
import java.util.ArrayList;


public class PrintArray {

    public static void main(String args[]){
        ArrayList<Double> arrelements=OtherClass.getNumbers();

        java.util.Iterator<Double> iterator = arrelements.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }





}

class OtherClass{

    public static ArrayList<Double> getNumbers( )

    {
        Random getNum=new Random();
        ArrayList<Double> arr=new ArrayList<Double>(1000);

        int size=1000;
        for(int i=0;i<size;i++)
        {
            double gauss=getNum.nextGaussian()*15+70;
            arr.add(gauss);
        }
        System.out.println(arr);
        return arr;
    }
}

You can iterate through the ArrayList to read numbers from your ArrayList.

import java.util.Random;
import java.util.ArrayList;

import javax.swing.text.html.HTMLDocument.Iterator;

public class PrintArray {

    public static void main(String args[]){
        ArrayList<Double> arrelements=getNumbers();

        java.util.Iterator<Double> iterator = arrelements.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }


    public static ArrayList<Double> getNumbers( )

    {
        Random getNum=new Random();
        ArrayList<Double> arr=new ArrayList<Double>(1000);

        int size=1000;
        for(int i=0;i<size;i++)
        {
            double gauss=getNum.nextGaussian()*15+70;
            arr.add(gauss);
        }
        System.out.println(arr);
        return arr;
    }


}

Upvotes: 1

Marcos Delgado
Marcos Delgado

Reputation: 197

You can read it directly by creating the array list of type double:

import java.util.Random;
import java.util.Scanner;
import java.util.ArrayList;

public class Numbers {
public ArrayList<Double> getNumbers() {
    Random getNum = new Random();
    ArrayList<Double> arr = new ArrayList<Double>(1000);

    int size = 1000;
    for (int i = 0; i < size; i++) {
        double gauss = getNum.nextGaussian() * 15 + 70;
        arr.add(gauss);
    }

    return arr;
}

public static void main(String[] args) {
    Numbers number = new Numbers();
    ArrayList<Double> arr = number.getNumbers(); 
    System.out.println(arr);
}
}

Upvotes: 1

Related Questions