需要检查另一个“合法”数组阵列的验证

问题描述:

我需要输入第一个数字数组的数量,比输入尽可能多的数字作为数组长度,比需要询问位数组的长度和输入所有的投入和长度一样多。 这部分很容易,做得很好。 现在我需要检查数字阵列中的每个数字出现在数字数组中。 如果是打印的东西,其他打印不是[东西..] 我没有对数字我有一个巨大的问题,当涉及到两位数,我只是不能使它的工作。我已经试过几件事情有许多选择,但仍然无法找到工作的东西,所以我只会张贴在这里的最后一个版本,与个位数的数字工作:需要检查另一个“合法”数组阵列的验证

int numInNumbersArray, 
    tempoNumber=0, 
    counterChecks=0, 
    digitsCount=0; 
    char digitInDigitsArray; 
    final char MINUS='-'; 
    boolean isNegative=false, 
      isMinus=false, 
      numbersOkay=false; 
    System.out.println("Please enter the length of the numbers array: "); 
    int numbersLength=s.nextInt(); 
    int[] numbersArray=new int [numbersLength]; 
    System.out.printf("Please enter %d numbers: ",numbersLength); 
     for(int i=0;i<numbersArray.length;i++){ 
      numInNumbersArray=s.nextInt(); 
      if(numInNumbersArray<0){ 
       numInNumbersArray*=-1; 
       isNegative=true; 
      } 
      numbersArray[i]=numInNumbersArray; 
      } 
    System.out.println("Please enter the length of the digits array: "); 
    int digitsLength=s.nextInt(); 
    char[] digitsArray=new char [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().charAt(0); 
       digitsArray[i]=digitInDigitsArray; 
       if(digitInDigitsArray==MINUS){ 
        isMinus=true; 
       } 
      } 
      if(isMinus!=isNegative){ 
       System.out.println("Not all numbers are OK."); 
      }else{ 
       for(int i=0;i<numbersArray.length;i++){ 
        tempoNumber=numbersArray[i]; 

         for(int j=0;j<digitsArray.length;j++){ 
          while(counterChecks== 0){ 
          if(tempoNumber<10){       
           if(tempoNumber==(digitsArray[j]-'0')){ 
            numbersOkay=true; 
            counterChecks++; 
           } 
           else{ 
            numbersOkay=false; 
           } 

          }else{ 
           while(tempoNumber>=10){ 
           if(tempoNumber%10==(digitsArray[j]-'0')){ 
            numbersOkay=true; 
            counterChecks++; 
           } 
           else{ 
            numbersOkay=false; 
           } 
           tempoNumber/=10; 
           } 
         } 
          digitsCount++; 
        } 
       } 
       } 
      if(counterChecks==(digitsCount/digitsArray.length)){ 
       System.out.println("All numbers are OK."); 
       } 
       else{ 
        System.out.println("Not all numbers are OK."); 
       } 
      } 

我只是绝望现在很迷茫。我知道这种方法很糟糕,并且无法正常工作,请有人可以帮助解决这个问题,正如我所提到的,我只有两位数字和数字的问题。所以这是重点应该发生的地方。 高级谢谢。 !

+0

如果您有办法将多位数字分解为各自的数字,那么这能解决您的问题吗? – 2014-12-02 20:39:15

+0

显然这就是我需要做的..那就是我试图做的事情,并检查每次(数字中的一位数字)出现在数字验证阵列。 – rassko 2014-12-02 20:42:23

+0

请解释“不起作用”:一个例子,输入,预期和实际输出,将是很大的帮助。事实上,知道'counterChecks'和'digitsCount'也是很好的知识。 – 2014-12-02 21:00:23

如果你想检查tempoNumber中的所有数字,你的while循环需要运行,而tempoNumber>0;你当前的代码不会检查最后一位数字。

至于最终结果:逻辑是,只要你找到一个数字不在你的digitsArray,你就完成了:一个数字中至少有一个数字是不允许的。这表示将numbersOkay初始化为true,并在找到坏数字时将其设置为false

+0

这仍然是行不通的......我已经试过这个。 – rassko 2014-12-02 20:44:16