如何替换整数数组中的重复数字?

时间:2014-04-13 05:36:38

标签: java arrays

我的问题是一个非常基本的问题。为了给出一些背景知识,我得到了一个编写程序,用于将100个唯一(即无重复)值存储到数组中并显示它们。我之前认为我已经走上了正确的轨道,但是当我进行试运行时,我所得到的只是一个超出界限的错误。" Eclipse告诉我它的方法" checkDouble"但我似乎无法找到错误的地方。这里的任何人都可以帮助我吗?

public class exercise2 {
/*@author Paolo
 * @param hundredVal array to store values
 * @param input random number generator from 1-100
 */
public static int[] hundredVal = new int[100];
public static int n = (int) (Math.random()*100+1);
    public static void main(String[] args) {
        storeVal();
    }

    /*
     * This method is meant to take 100 random values
     * from 1-100 and store them into the array hundredVal
     */
    private static void storeVal() {
        for (int i = 0; i < hundredVal.length; i++){
            hundredVal[i] = (int) (Math.random()*100+1);
            if(!checkDouble(hundredVal)){
                printVal();
            }
        }       
    }

    //This method is meant to test if there are any repeated values
    public static boolean checkDouble (int[] hundredVal){
        for (int i = 0; i < hundredVal.length; i++){
            for (int j = 0; i < hundredVal.length; j++){
                if (hundredVal[i] == hundredVal [j] && i != j){
                    return true;
                }
            }
        }
        return false;
    }

    //this just prints out the numbers on the console.
    private static void printVal(){
        for (int i =0; i < hundredVal.length; i++){
            System.out.println(hundredVal[i]);
        }
    }
}

我不希望任何人为我解决整个任务。我只是想知道是什么原因造成了越界错误。

2 个答案:

答案 0 :(得分:0)

class exercise2{
public static int[] hundredVal = new int[100];
public static int n = (int) (Math.random()*100+1);
public static void main(String[] args) {
    storeVal();
    printVal();
}

private static void storeVal() {
    for (int i = 0; i < hundredVal.length; i++){
        hundredVal[i] = (int) (Math.random()*100+1);
    }     
    if(!checkDouble(hundredVal)){
            printVal();

        }

}

public static boolean checkDouble (int[] hundredVal){
    for (int i = 0; i < hundredVal.length; i++){
        for (int j = 0; j < hundredVal.length; j++){
            if (hundredVal[i] == hundredVal [j] && i != j){
                return true;
            }
        }
            }
    return false;
        }
private static void printVal(){
    for (int i =0; i < hundredVal.length; i++){
        System.out.println(hundredVal[i]);
        }
}}

答案 1 :(得分:0)

你可以使用适当的java集合 - 在你的情况下LinkedHashSet应该完成这项工作。它是一个Set(包含唯一值),它是有序的。使用集合而不是数组几乎总是更好。