Java for循环与数组集的比较 在数组中只显示相等元素的正确条件是什么。

Java for循环与数组集的比较 在数组中只显示相等元素的正确条件是什么。,java,arrays,swing,joptionpane,Java,Arrays,Swing,Joptionpane,这是密码 int num[]=new int[5]; int numm[]=new int[5]; for(int x=0;x<num.length;x++){ num[x]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num["+(x+1)+"]")); } for(int x1=0;x1<num.length;x1++){

这是密码

    int num[]=new int[5];
    int numm[]=new int[5];

    for(int x=0;x<num.length;x++){
        num[x]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num["+(x+1)+"]"));
    }

    for(int x1=0;x1<num.length;x1++){
        num[x1]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num1["+(x1+1)+"]"));
    }

    String tosho="";
        for(int a=0;a<num.length;a++){
            for(int a1=0;a1<numm.length;a1++){
            if(num[0]==numm[0]){
              num[0]=numm[0];}


            else if(num[1]==numm[1]){
                num[1]=numm[1];}

            else if(num[2]==numm[2]){
                num[2]=numm[2];}

            else if(num[3]==numm[3]){
                num[3]=numm[3];}

            else if(num[4]==numm[4]){
                num[4]=numm[4];}       
        }

    }tosho+=(num[0])+""+(num[1])+""+(num[2])+""+(num[3])+""+(num[4]);

    JOptionPane.showMessageDialog(null, "both "+tosho+" found in array.");
当我在第一个aary中输入1,2,3,4,5时

然后是第二个数组中的1,22,3,4,5

它仍然显示2或22,即使它们不相等,,,,

为什么代码这么长

    for(int a=0;a<num.length;a++){
        for(int a1=0;a1<numm.length;a1++){
        if(num[0]==numm[0]){
          num[0]=numm[0];}


        else if(num[1]==numm[1]){
            num[1]=numm[1];}

        else if(num[2]==numm[2]){
            num[2]=numm[2];}

        else if(num[3]==numm[3]){
            num[3]=numm[3];}

        else if(num[4]==numm[4]){
            num[4]=numm[4];}       
    }
   }
你喜欢这样吗

    List <Integer> matchedElements = new ArrayList<Integer>();
    for(int a=0;a<num.length;a++){
        for(int a1=0;a1<numm.length;a1++){
            if(num[a]==numm[a1]){
                matchedElements.add(num[a]);
           }
        }
    }
    Integer[] mached = matchedElements.toArray(new Integer[matchedElements.size()]);
    System.out.println(Arrays.toString(mached));

你开始用

if(num[0]==numm[0]){
          num[0]=numm[0];}

然后使用ELSE,这意味着只有在第一个if未执行时才会对其进行计算。这意味着在更改数组的第一个元素后,不会更改其他元素,因为num[0]将等于numm[0],因此不会更改其他元素。删除所有其他单词,它就会工作。

作业错误。从不将值指定给numm变量

嵌套循环在代码中无效。没有使用和a1循环变量

我添加了一个额外的数组来存储相同的值,称为sameValues,并分配相同的值

int num[]=new int[5]; int numm[]=new int[5]; int sameValues[] = new int[5];

for(int x=0;x<num.length;x++){
        num[x]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num["+(x+1)+"]"));
        }

for(int x1=0;x1<num.length;x1++){
        numm[x1]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num1["+(x1+1)+"]"));
        }

int counter = 0;
String tosho="";
for(int a=0;a<num.length;a++){
        for(int a1=0;a1<numm.length;a1++){
                if(num[a] == numm[a1]){
                        sameValues[counter] = num[a];
                        counter++;
                 }
        }
}

for(int x=0;x<counter ;x++){
        tosho+=(num[x]) + " ";
}
可能是num[x1]

您可以使用此代码填充tosho:

这两个嵌套循环

for(int a=0;a<num.length;a++){
    for(int a1=0;a1<numm.length;a1++){
    ...
这些都是无用的

您没有以任何方式使用变量a和a1


相反,您可以简单地将形式0迭代到数组长度,并检查具有相同索引的元素是否相等。

是的,它可以缩短,但逻辑是否仍然错误?对于所描述的问题,我会使用ArrayList.contains找到交集,并显示它…但它仍然不显示唯一相等的元素。这是因为如果手动检查数组的每个元素,甚至不需要这两个循环所有这些ifsbig错误为numm[],哈哈哈,谢谢你的代码。
String tosho="";
for(int a=0;a<num.length;a++) {
    if(num[a]==numm[a]) {
        tosho+=num[a]+",";
    }
}
for(int a=0;a<num.length;a++){
    for(int a1=0;a1<numm.length;a1++){
    ...