1

我正在尝试传递两个数组,它们由用户记录在 readData(); 方法,然后将两个数组传递给一个方法 (intersectionDuplicates();),该方法检查两个数组中的重复项。然后它将重复的值添加到 2 个新数组中。然后将这些数组传递给一个方法,该方法查找两个数组之间的交集/公共值,并将 THOSE 值推送到另一个新数组。然后在 printArray() 中打印这个新数组;方法。readData 和 printArray 方法都按预期工作。我的困惑在于通过每个方法传递数组/数组。这是我到目前为止所拥有的。

static int SizeofX = 0;
static int SizeofY = 0;
static int [] x = new int[100];    
static int [] y = new int[100];
public static void main (String [] args) {
    int SizeofX = readData(x);
    int SizeofY = readData(y);

    intersectionDuplicates(x, SizeofX, y, SizeofY);


public static int[] intersectionDuplicates (int [] a, int numElementsInA, int [] b, int numElementsInB) {
           int temp2 = 0;
            int temp = 0;
            int [] z = new int [100];
            int [] y = new int [100];
            for (int i=0; i<numElementsInA; i++){
               for (int j=i+1; j<numElementsInA; j++){
                  if (a[j]!=a[i]) {
                        z[temp] = a[i];
                        temp++;
                    }
                }
            }
            for (int i=0; i<numElementsInB; i++){
               for (int j=i+1; j<numElementsInB; j++){
                  if (b[j]!=b[i]) {
                        y[temp2] = a[i];
                        temp2++;
                    }
                }
            }
        }//end intersectionDuplicates


  public static int[] intersection (int [] x, int numElementsInX, int [] y, int numElementsInY) {
     int temp = 0;  
     int [] z = new int [100];
     for (int j=0; j<numElementsInX; j++){
        for (int i=0; i<numElementsInY; i++){
           if (x[j]==y[i]) { 
              z[temp] = x[j];
              temp++;
           }
        } 
     }
     printArray(z, temp);
  }//end intersection

如何将 intersectionDuplicates 中的新数组传递给下一个方法交集?

也很抱歉这个问题的长度!感谢您的任何帮助!

4

5 回答 5

1

您可以在方法 intersectionDuplicate 结束之前添加以下对交集的调用

MyClassName.intersection(z, temp, y, temp2);
于 2013-07-26T19:27:10.613 回答
1

制作两种方法 1. 在数组中返回不同的数字

    Array.sort(x)
    int ele=x[0]
    for(int i=0;i<x.length();i++)
     {
           if(ele==x[i])
               continue;
           else{
                  ele=x[i]
                  count++
                }
     }

最后计数将给出新数组的长度。现在这些大小的新数组在交叉点重复。

2 方法。使用几乎相同的逻辑在新数组中查找不同的值。当你有两个数组时,假设让它们 temp1[],temp2[]。你这样调用交集方法

              intersection(temp1,temp1.length(),temp2,temp2.lenght())

希望这会有所帮助..我是这样做的,同样的事情。有一天会上传这个。

于 2013-07-26T19:33:07.967 回答
1

在 Java 中,数组长度可以使用array.length. 所以这个方法的长度参数

public static int[] intersection (int [] x, int numElementsInX, int [] y, int numElementsInY)

是多余的。

我猜你的intersection方法是错误的。什么时候x[i]不同于y[j]你需要把它放在你的z数组中。

也是intersectionDuplicates计算xy数组中的公共元素两次。您需要摆脱其中一个 for 循环。

在您的 main 方法中,您同时拥有和的句柄。您可以将其传递给任何方法以获取数组。您也可以将此数组提供给您的方法。xyzzprintArray

于 2013-07-26T19:30:03.517 回答
0

因为我想你不能运行intersection方法 from intersectionDuplicates,所以你可以使用类似的方法

public static int[] intersectionDuplicates (int [] a, int numElementsInA, int [] b, int  numElementsInB, int[] z,int[] y) {
 //do the same as in your code, but without initializing z and y, they must be initialized in main method
 return new int[]{temp,temp2};
}

并从您的 main 方法传递空数组。它们是引用,因此在运行 intersectionDuplicates 之后,它们都将是字段并在您的 main 方法中可用。

要获取temp2andtemp变量,您可以int[2]从您的方法返回或再次将int[2]数组作为参数传递。

于 2013-07-26T19:42:26.810 回答
-1
public class ModifyArray{
public static void main(String[] args){


System.out.println("1-REMOVE");
System.out.println("2-ADD");
System.out.println("3-EXIT");
System.out.print("Enter a Menu from 1-3 :  ");
int b =Keyboard.readInt();
int m = 0;
int[] arr = new int [b];
            switch(b){

                case 1: System.out.println("REMOVE:");
                        System.out.print("Input a number:");
                        int a =Keyboard.readInt();
                        for(int i=0;i<arr.length;i++){
                            if(arr[i]==b){
                                System.out.print(b + " is found at index " + i);

                            }else{
                                System.out.print("Numbers not found! ");
                            }

                        }



                        break;

                case 2: System.out.println("ADD");
                        System.out.print("Input a number :");
                        int z =Keyboard.readInt();


                case 3: System.out.print("EXIT");
                        System.exit(0);

                }




            }




        }
于 2014-11-23T04:29:19.967 回答