简体   繁体   中英

How do I find the greatest number in a random set of numbers using an array for Java?

This is what I have so far, but it only compares number with itself. I need it to compare with all 100 numbers. Thank you!

import java.util.Random;

public class CompSci {
    public static void main(String[] args) {
        Random generator = new Random();

        for (int x = 1; x < 100; x++) {
            int num1 = generator.nextInt(100);
            System.out.println ("A number from 1 to 100: " +num1);

            int numbers[] = new int[]{num1};
            int largest = numbers[0];

            for(int i = 1; i < numbers.length; i++) { 
                if(numbers[i] > largest)
                    largest = numbers[i];
                }
                System.out.println("Largest Number is: " + largest);
            }
        }
    }

For each iteration of your outer loop you are creating a new array, so move the

int numbers[] array to before the first for loop.

In this case you can set the size of this array to 100 as that will be how many times you will iterate.

Also the value of largest should also be kept outside the loop, and if so then you do not need to loop through all numbers in the array, just the last entered number. In fact you do not even need the number array.

try

import java.util.Random;

public class CompSci {
  public static void main(String[] args) {
    Random generator = new Random();

    int numbers[] = new int[100];     // not even really needed for this exercise
    int largest = Integer.MIN_VALUE;  // a very small number

    for (int x = 1; x < 100; x++) {
        int num1 = generator.nextInt(100);
        System.out.println ("A number from 1 to 100: " +num1);

        numbers [x] = num1;
        if(numbers[x] > largest)
        {
            largest = numbers[x]; //Set if find new largest number
        }
         System.out.println("Largest Number is: " + largest);
    }
}

Note

Also check the javadocs (Thanks @Andreas)

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive),

另外,因为循环当前仅运行99次,而不是预期的100次,所以for循环应为x = 0到x <100。

You're so close! Divide and conquer the solution into steps:

  1. Generate the randomized set
  2. Create a placeholder for the largest value, and initialize it to the first term in the set.
  3. Visit each subsequent term in the set, and update largest if the term is greater.

Your solution is very close, but a bit tangled up. Let's go over it line-by-line to understand what needs to be adjusted:

// Step 1. Generate the set
for (int x =1; x<100; x++)  // iterate from x = 1 to 100 (exclusive)
{                           // and for each iteration:
    int num1=generator.nextInt(100);  // create a random integer num1
    System.out.println("A number from 1 to 100: " +num1);

    int numbers[] = new int[]{num1};  // create array 'numbers' of length 1, 
                                      // and place 'num1' inside the array
                                      // notice how this recreates the set 
                                      // for each new number

    // Step 2. Instantiate largest to the first random number:
    // (notice how this is nested inside Step 1.)
    int largest = numbers[0]; // create another integer 'largest' and
                              // assign to it the 1st element in 'numbers'
                              // (which is 'num1')

    // Step 3. Visit each number (also nested inside Step 1)
    for(int i=1; i<numbers.length; i++) // iterate from i=1 (inclusive) until
    {                                   // 'numbers.length' (exclusive)
    // note that 'numbers.length' is 1 above, and 'i' is also 1, 
    // so 'i < numbers.length' is 'false' and the lines below will never execute:
        if(numbers[i] > largest)    // if the current number in `numbers` is greater
            largest = numbers[i];   // update largest
    }
    System.out.println("Largest Number is: " + largest); // print largest
} // stop step 1

Here's how you may untangle the steps, and perform them in sequence:

// Step 1. Generate the set
int size = 100;
int numbers[] = new int[size];  // create array 'numbers' of length 'size'
for (int x = 0; x < size; x++)  // iterate over each element in the array
{
    numbers[x] = generator.nextInt(100);  // and place a random number in its place
}  // stop step 1; now you have a set of 100 random numbers!

// 2. Instantiate largest to the first random number:
int largest = numbers[0];

// 3. visit each remaining number,
for (int i = 1; i < size; i++)
{
    // and update largest if current number is greater
    if(numbers[i] > largest)
        largest = numbers[i];
}

System.out.println ("Largest Number is: " + largest);  // print largest
import java.util.Random;

public class CompSci
{
    public static void main(String[] args) {
            Random generator = new Random();
            int numbers[] = new int[100];
            int largest = 0;
            for(int i = 0;i < 100; i++) {
                int num1 = generator.nextInt(100);
                numbers[i] = num1;
                if(numbers[i] > largest) {
                    largest = numbers[i];
                }
            System.out.println("Random number from 1 to 100: " + numbers[i]);
        }
        System.out.println("Largest Random Number: " + largest);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM