检查所有数字是否出现在另一个数组中

时间:2014-11-29 22:11:24

标签: java

我制作了这段代码,应该要求用户输入包含他想要的数量的第一个数组的长度,而不是接收每个数字,直到完成数量。 之后,他需要询问数字数组的长度,而不是接收数字。 比,我需要检查所有数字是否包含所有数字,如果是真,打印它,如果没有,打印假。 在这段代码中,我已经用字符串数组替换了int [],因为我认为这是它的工作方式。 当我尝试制作一个只有一位数字的Int数组时,它工作得很好,当你想要22个带2个数字的数字时,问题就出现了,检查中断了并且没有工作。

String numInNumbersArray,
digitInDigitsArray;
int counterNumbers=0;
System.out.println("Please enter the length of the numbers array: ");
int numbersLength=s.nextInt();
String[] numbersArray=new String [numbersLength];

System.out.printf("Please enter %d numbers: ",numbersLength);
    for(int i=0;i<numbersArray.length;i++){
        numInNumbersArray=s.next();
        numbersArray[i]=numInNumbersArray;
    }
System.out.println("Please enter the length of the digits array: ");
int digitsLength=s.nextInt();
String[] digitsArray=new String [digitsLength];
System.out.printf("Please enter %d digits between 0 - 9 and - if you want: ",digitsLength);
    for(int i=0;i<digitsArray.length;i++){
        digitInDigitsArray=s.next();
        digitsArray[i]=digitInDigitsArray;
        }
    for(int i=0;i<digitsArray.length;i++){
        for(int j=0;j<numbersArray.length;j++){
            if(numbersArray[j].equals(digitsArray[i])){
                counterNumbers++;
            }
        }
    }
    if(counterNumbers==numbersArray.length){
        System.out.println("true\n");
    }else{
        System.out.println("false\n");
    }

所以我显然需要一个String数组,但是我不知道如何从这里继续检查数字中的每个数字。 (我不能使用高级方法,只能简单检查)。 你的帮助或调整会很棒。感谢。

编辑:它必须是字符串,因为它也可能包含' - '(negetive数字) 为了让理解更加清晰我将添加例子:

digits arrays for example : (1,2,-,3)
and numbers array : (1,-2,3)

这应该返回true。

and digits: (1,2,3)
numbers: (12,-3,123)

应该返回false。

1 个答案:

答案 0 :(得分:0)

您的问题在于检查阵列是否等于。

想象一下,如上所述numbersArray = {"2", "2"}digitsArray = {"2", "2"}

这个循环:

for(int i=0;i<digitsArray.length;i++){
    for(int j=0;j<numbersArray.length;j++){
        if(numbersArray[j].equals(digitsArray[i])){
            counterNumbers++;
        }
    }
}

将第一个“2” - numbersArray[0]digitsArray[0]digitsArray[1]进行比较,制作counterNumbers = 2。然后,第一个for循环将处理到i=1,其中第二个“2” - numbersArray[1]digitsArray[0]digitsArray[1]进行counterNumbers = 4。< / p>

你在这看到你的错吗?

这是一个提示,您应该逐个比较每个数组,而不是将numbersArray中的第一个“数字”与digitsArray中的所有“数字”进行比较。注意:只有在每个数组(numbersArraydigitsArray)的顺序相同时,此提示才有用。你应该考虑对它们进行排序以确保它。

因为这看起来像是家庭作业,所以我会停在这里,让你自己尝试修理它。