查找数组

时间:2015-07-28 02:36:40

标签: java arrays

找到随机数组的最小值时,我遇到了一个小问题。对于最小的数字,我总是得到0。最大的数字似乎没问题。我也收到了错误的索引编号。

当前代码:

public class RandomArray {

public static void main(String[] args) 
{
    int indexHigh = 0;
    int indexLow = 0;
    int max = 0;
    int min = 0;

    int[] randArray = new int[10];

    for(int i = 0; i < randArray.length; i++)
    {
        randArray[i] = RandomMethod.randomInt(1,1000);
        System.out.print(randArray[i] + " ");
        System.out.println(" ");

        //Max & Min
         if (randArray[i] > max)
          max = randArray[i];
         indexHigh = i;
            if (randArray[i] < min)
                min = randArray[i];
         indexLow =  i;
    }

            System.out.println("The highest minimum for the December is: " + min + " at index: " + indexLow);
            System.out.println("The highest maximum for the December is: " + max + " at index: " + indexHigh);


    }

}

支持类(指令说它需要在另一个类中。只需要方法):

import java.security.SecureRandom;
import java.util.*;

public class RandomMethod {

    //implement random class
    static Random randomNumbers = new Random();

    public static void main(String[] args) 
    {

        //#7 -- Generates a number between 10 & 20 ( 100x )

        /*
        int counter = 0;
        while(counter <= 100)
        {
            System.out.println(randomInt(10,20));
            counter++;
        }
        */

        //# 8

        //int[] randArray = new int[randomInt(1,1000)];


    }


    // Random Int method where value is greater than x & less than y
    public static int randomInt(int x, int y)
    {
        int randomValue = randomNumbers.nextInt(y - x) + x;
        return randomValue;
    }

}

3 个答案:

答案 0 :(得分:3)

  

对于最小的数字

,我一直得到0

那是因为您已初始化min = 0。而您的randInt()永远不会生成数字< 0。因此,min永远不会改变。

要修复,让初始min高于randInt产生的最高值。

int min = 1001; // Or to be safer, use Integer.MAX_VALUE
  

我也收到了错误的索引编号。

这是因为您的if声明并未包含indexHigh = i;声明。

使用,

 if (randArray[i] > max) {
  max = randArray[i];
  indexHigh = i;
 }
    if (randArray[i] < min) {
        min = randArray[i];
        indexLow =  i;
 }

答案 1 :(得分:2)

你的min已初始化为0。所以它只寻找零以下的最小值。将min初始化为更高的数字,高于预期的输入,或使用int min = Integer.MAX_VALUE;

对于索引打印,if语句的大括号{}是一个问题。现在发生的是每个循环,indexHigh&amp; indexLow的重置值为i

     //Max & Min
     if (randArray[i] > max){
       max = randArray[i];
       indexHigh = i;
     }
     if (randArray[i] < min){
       min = randArray[i];
       indexLow =  i;
     }

这样,这两个变量在实际遇到更高/更低值时仅取i的值。

答案 2 :(得分:0)

要检查最小值的变量应该用大数字初始化。尝试

int min = Integer.MAX_VALUE;