for循环与比较数组

时间:2013-11-20 13:48:36

标签: 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++){
        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,即使它们不相等,,,

5 个答案:

答案 0 :(得分:3)

为什么这么长的代码

    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));

答案 1 :(得分:2)

你用

开始你的if序列
if(num[0]==numm[0]){
          num[0]=numm[0];}

然后你正在使用ELSE,这意味着只有在第一个if没有执行时它才会被评估。这意味着在更改数组的第一个元素后,没有其他内容会被更改,因为没有ELSE,因为num [0]将等于numm [0]。删除所有“其他”字样,它应该有效。

答案 2 :(得分:2)

分配错了。你永远不会为numm变量赋值。

嵌套循环在代码中没有效果。没有使用aa1循环变量。

我添加了一个额外的数组来存储名为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]) + " ";
}

答案 3 :(得分:2)

num[x1]=Integer.parseInt(JOptionPane.showInputDialog("Enter Values for num1["+(x1+1)+"]"));

也许numm[x1]

您可以使用此代码填充tosho

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

答案 4 :(得分:2)

这两个嵌套循环

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

没用。

您没有以任何方式使用变量aa1

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