Java,通过不同方法传递和修改数组,数组交叉

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

我试图传递两个数组,这两个数组由用户记录在readData()中;方法,然后将两个数组传递到一个方法(intersectionDuplicates();)中,该方法检查两个数组中是否存在重复项。然后,它将不带重复项的值添加到2个新数组中。然后将这些数组传递给一个方法,该方法查找两个数组之间的交集/公共值,并将这些值推送到另一个新数组。然后在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
static int-SizeofX=0;
静态int-SizeofY=0;
静态整数[]x=新整数[100];
静态整数[]y=新整数[100];
公共静态void main(字符串[]args){
int-SizeofX=readData(x);
int SizeofY=读取数据(y);
交叉重复项(x、SizeofX、y、SizeofY);
公共静态int[]相交重复项(int[]a,int numElementsInA,int[]b,int numElementsInB){
int temp2=0;
内部温度=0;
int[]z=新的int[100];
int[]y=新的int[100];

对于(int i=0;i您可以在方法intersectionDuplicate结束之前添加对intersection的以下调用

MyClassName.intersection(z, temp, y, temp2);

在Java中,可以使用
array.length
找到数组长度。因此,此方法的长度参数

public static int[] intersection (int [] x, int numElementsInX, int [] y, int numElementsInY)
这些都是多余的

我猜你的
交集
方法是错误的。当
x[I]
y[j]
不同时,你需要将其放入你的
z
数组中吗

另外,
intersectionDuplicates
正在计算
x
y
数组中的公共元素两次。您需要去掉其中一个for循环

在main方法中,您有
x
y
两个句柄。您可以将它们传递给任何方法以获得
z
数组。您也可以将此
z
数组交给
printArray
方法。

创建两个方法 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++
                }
     }
希望这有帮助我也是这么做的。
总有一天会上传这个。

因为我想你不能从
intersectionDuplicates
运行
intersection
方法,所以你可以使用如下方法

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};
}
并从主方法传递空数组。它们是引用,因此在运行intersectionDuplicates之后,它们都将是字段,并且在主方法中可用

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

公共类ModifyArray{
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);

                }




            }




        }
公共静态void main(字符串[]args){ 系统输出打印项次(“1-删除”); 系统输出打印项次(“2-ADD”); System.out.println(“3-EXIT”); System.out.print(“从1-3进入菜单:”); intb=Keyboard.readInt(); int m=0; int[]arr=新的int[b]; 开关(b){ 案例1:System.out.println(“删除”); 系统输出打印(“输入一个数字:”); inta=键盘.readInt();
对于(int i=0;iI我也不使用array.length来查找数组的长度,因为它返回数组的整个初始化大小,而不仅仅是用户条目。我也不使用集合,因为我的教授还没有教我们这些集合,并且希望我们在没有这些集合的情况下完成此任务。一个家庭作业问题需要付出实际的努力吗?我对人性的信心是……很小的y已续订。我假设您有一些输入错误需要更正(
main
未正确结束,并且在
intersectionDuplicates
中未返回任何内容)。请尝试在
intersectionDuplicates
的末尾调用
intersection
(从其定义中删除返回类型)或者在
intersectionDuplicates
中返回一个数组,稍后将其作为
intersection
的参数传递。您可以从
intersectionDuplicates
中调用
intersection
方法,为什么这个问题会被标记为
jvm
?啊。Duh.Lol,我想我只需要一点推动!但您不需要我的classname part,因为它已经是该类的一部分,对吗?谢谢!array.length不是获取数组的初始化大小,而不是实际数据输入的数组大小吗?我的数组初始化为100,但数据项在100以下。@user2210274的确如此,并且
长度
元素siny
之间的偏移量应该是be所有
null
值。好的,这里有一个乱码。初始化
z
主要为
z=new int[100]
。并将其传递给您的方法。然后,所有方法返回
z
中的元素数(yout temp变量,请给它一个更好的名称)我很好奇在询问元素数量之前如何创建数组。总有一天你会得到
ArrayIndexOutOfBoundsException
我只是在while循环中有一个计数器,它限制用户从数组[0到99]的输入。这绝对不是万无一失的,但可以做家庭作业。我知道上面的所有内容都很长。好的。在你的第一个for循环中,你说for(int=0…,你指的是哪个变量,ele?ele用来指数组的第一个元素。因为数组是sort,所以下一个元素必须大于或等于该值(重复)所以把计数放在里面。最后你会得到数组大小。这不会给你ArrayIndexOutofBoundsCeptioni也改变了上面的if和else条件。请检查一次。!!如果你觉得有价值,你可以把它标记为answerarray.sort是一个java.util,对吗?实际上我的教授不允许我们使用java.util,而不是Scanner来输入i信息:(在这种情况下,请使用气泡排序方法对数组进行排序。请在此处找到它
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);

                }




            }




        }