想要使用在方法中创建的数组,以便在其他方法中进一步使用

时间:2018-11-20 01:10:39

标签: java methods

我有一个问题,标题实际上完美地概括了它。因此,我将继续向您展示代码片段。 因此,methode generate正在生成一个数组,其中填充了1到1000之间的数字,包括两者。数组的长度是用户输入的。 下一个方法isPrime将得出结论,如果它是质数,那么我可以在其他方法中将这些数字与真实条件一起使用。生成方法有效,但是在isPrime中,我总是会出错。如果您能想到更好的方法,请告诉我。

static int[] generate(int n) {
    int[] arr = new int[n+1];
    for(int x = 0; x <= n; x ++) {
        int number = (int) (Math.random()* 999)+1;
        arr[x] = number;
    }
    return arr;
}

static int isPrime(int p, final int q[]) {                           
    boolean itIs = true;
    //final int[] arr;

    for(int r = 0; r <= p; r++) {               // here it somehow states r is deadCode
        for(int j = 2; j < q[r]; j++) {             
            if(q[r]%j == 0) {                       
                itIs = false;                       
            }
        }
        return q[r];
    }

}

2 个答案:

答案 0 :(得分:0)

首先,创建一种方法来检查值是否为质数:

public boolean isPrime(int value) {
    for (int i = 0; i < value / 2; i++) { // value / 2 is enough, doesn't need to check all values
        if (value % i == 0) {
            return false;
        }
    }
    return true;
}

然后您检查数组的每个值,并将素值放入新数组:

public int[] filterArray(int[] array) {
    List<Integer> intList = new ArrayList<>();
    for (int i = 0; i < array.length; i++) {
        if (isPrime(array[i])) {
            intList.add(array[i]);
        }
    }
    Integer[] integerArray = intList.toArray(new Integer[intList.size()]);
    int[] intArray = ArrayUtils.toPrimitive(integerArray);
    return intArray;
}

然后您将获得过滤后的素数数组。

答案 1 :(得分:0)

它仍然无法正常工作,但我将其更改为此。

static int[] generate(int n) {
    int[] arr = new int[n+1];
    for(int x = 0; x <= n; x ++) {
        int number = (int) (Math.random()* 999)+1;
        arr[x] = number;
    }
    return arr;
}


static boolean isPrime(int p) {                                     
    boolean itIs = true;
        for(int j = 2; j < p; j++) {                                
            if(p%j == 0) {                                          
                itIs = false;                                       
            }
        }   
    System.out.print(p + "bla" + itIs);
    return itIs;
}

//numberCount, isPrime, generate()[]
static void filterPrimeNumbers(int zahlmenge,boolean t, final int[] u) {
    int []arr2 = new int[0];
    int l = 0;
    for(int n = 0; n <= zahlmenge; n++) {
        if(t) {
            arr2[l] = u[n];
            l++;
        }
        System.out.println(arr2[0]);
    }

}

public static void main(String[] args) {

    System.out.print("Give me a number: ");
    Scanner sc = new Scanner(System.in);
    int numberCount = sc.nextInt();
    filterPrimeNumbers(numberCount, isPrime(generate(numberCount)[0]), generate(numberCount));

}

}