Android Build a Simple Android App with Java Basic Android Programming Using the Random Class

Yoeuth Yen
Yoeuth Yen
8,851 Points

Can some one look at the code? I am getting the error Bummer: java.lang.ArrayIndexOutOfBoundsException: -1442945365 ().

String[] facts = { "Ants stretch when they wake up in the morning.", "Ostriches can run faster than horses.", "Olympic gold medals are actually made mostly of silver.", "You are born with 300 bones; by the time you are an adult you will have 206.", "It takes about 8 minutes for light from the Sun to reach Earth.", "Some bamboo plants can grow almost a meter in just one day.", "The state of Florida is bigger than England.", "Some penguins can leap 2-3 meters out of the water.", "On average, it takes 66 days to form a new habit.", "Mammoths still walked the earth when the Great Pyramid was being built.", }; // The button was clicked, update fact TextView // Randomly select a fact

          Random randomGenerator = new Random();
          int randomNumber = randomGenerator.nextInt(facts.length);
          String intAsString = facts[randomNumber];
RandomTest.java
String[] facts = {
                                            "Ants stretch when they wake up in the morning.",
                      "Ostriches can run faster than horses.",
                      "Olympic gold medals are actually made mostly of silver.",
                      "You are born with 300 bones; by the time you are an adult you will have 206.",
                      "It takes about 8 minutes for light from the Sun to reach Earth.",
                      "Some bamboo plants can grow almost a meter in just one day.",
                      "The state of Florida is bigger than England.",
                      "Some penguins can leap 2-3 meters out of the water.",
                      "On average, it takes 66 days to form a new habit.",
                      "Mammoths still walked the earth when the Great Pyramid was being built."
                                    };

Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt(facts.length);
String intAsString = facts[randomNumber];

1 Answer

Judah Devasahayam
Judah Devasahayam
Full Stack JavaScript Techdegree Student 18,371 Points

The reason you're getting an ArrayIndexOutOfBoundsException is because facts.length() is 10 (counted from 1 - 10) whereas an index of an array starts from 0, in your case 9 is the limit. So, this code of yours facts[randomNumber] is basically telling that there are 10 indices in the facts array when there are only 9. This is how your code should look like:

Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt(facts.length);
String intAsString = randomNumber + "";