Reputation: 133
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
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
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
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
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