public static int[] m1(int [] arr)//输出 arr数组的各个数。
{
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
return arr;
}
public static boolean m4(int arr,int i)//判断 arr是不是素数 是返回 true  不是返回false
    {
if(arr % i == 0){
return false;
}



return true;
}
public static int m3(int arr){//判断 该数组的每个数是不是素数
       for(int i=2;i<arr;i++){
        if(m4(arr,i)){
        return arr;
        }
        
       }
       

 return 0;

 

}
public static int[] m2(int [] arr){
int [] backarr= new int [arr.length];
int x=0;
for(int i=0;i<arr.length;i++){//遍历数组
x=arr[i];

   
}

 backarr[arr.length]=m3(x);----------提示我说这个

return backarr;
}
public static void main(String[] args) {
int [] arr={68,23,3,5,7,13,9,34};
int []suarr = m2( arr);--------------和这个是错误的  但是这段是老师写的 我实在不明白怎么错了   还望 能帮帮我 最好能多打点字 谢谢
m1(suarr); }}

解决方案 »

  1.   

    代码 是求数组arr里哪一些事素数 是的就放在一个数组里打印出来  谢谢 各位
      

  2.   

    for(int i=0;i<arr.length;i++){//遍历数组
    x=arr[i];   
    } backarr[arr.length]=m3(x);----------提示我说这个这个是越标了吧?
    backarr[arr.length-1]=m3(x)
      

  3.   

    package csdn;class demo1 {
    public static int[] m1(int[] arr)// 输出 arr数组的各个数。
    {
    for (int i = 0; (i < arr.length)&&arr[i]!=0; i++) {
    System.out.print(arr[i]+" ");
    }
    return arr;
    } public static boolean m4(int arr, int i)
    {
    int flag=0;
    for (; i < arr; i++) {
    if (arr % i == 0) {
    flag=1;
    }
    }
    if (flag==0) {
    return false;
    } else
    return true;
    } public static int m3(int arr) {
    if (!m4(arr, 2)) {
    return arr;
    } return 0;
    } public static int[] m2(int[] arr) {
    int[] backarr=new int[arr.length] ;
    int x = 0;
    int j=0;
    for (int i = 0; i < arr.length; i++) {// 遍历数组
    x = arr[i];
    if (m3(x)!=0) {
    backarr[j]=x;
    j++;
    }
    }
    return backarr;
    } public static void main(String[] args) {
    int[] arr = { 68, 23, 3, 5, 7, 13, 9, 34 };
    int[] suarr = m2(arr);
    m1(suarr); }}
    水平太低,将就看看。
      

  4.   

    问题之一是三楼提到的那个越界问题,另外你是打算将求道的素数放到backarr这个数组,对吧?
    我们先看一下你的逻辑,以第一个元素68为例,首先它进入m2,这时x也为68,再进入m3,首先i=2,m4返回false,问题是i++了,接着i=3了,肯定返回true了,所以会将68放入你那个素数的数组里面了,明白我说的了么,那儿那个i++,只要m4里面有一次返回的是true,也就是将你的数放入了集合了,你那个循环分开return,这个逻辑都是错的。
      

  5.   

    package test;public class Prime {
    public static int[] m1(int[] arr) {// 输出 arr数组的各个数。
    for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
    }
    return arr;
    } static boolean isPrimeNumber(int n) {
    int cnt = (int) (Math.sqrt(n));
    int i;
    if (n == 0 || n == 1)
    return false;
    for (i = 2; i <= cnt; i++)
    if (n % i == 0)
    break;
    if (i > cnt)
    return true;
    else
    return false;
    } static int[] m2(int[] arr){
    int[] str = new int[arr.length];
    for(int i=0;i<arr.length;i++){
    if(isPrimeNumber(arr[i])){
    str[i] = arr[i];
    }else{
    str[i] = 0;
    }
    }
    return str;
    }

    public static void main(String[] args) {
    int[] arr = { 68, 23, 3, 5, 7, 13, 9, 34 };
    m1(m2(arr));
    }}
    可以参考一下。