2014-12-02 85 views
0

我需要輸入第一個數字數組的數量,比輸入儘可能多的數字作爲數組長度,比需要詢問位數組的長度和輸入所有的投入和長度一樣多。 這部分很容易,做得很好。 現在我需要檢查數字陣列中的每個數字出現在數字數組中。 如果是打印的東西,其他打印不是[東西..] 我沒有對數字我有一個巨大的問題,當涉及到兩位數,我只是不能使它的工作。我已經試過幾件事情有許多選擇,但仍然無法找到工作的東西,所以我只會張貼在這裏的最後一個版本,與個位數的數字工作:需要檢查另一個「合法」數組陣列的驗證

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

回答

0

如果你想檢查tempoNumber中的所有數字,你的while循環需要運行,而tempoNumber>0;你當前的代碼不會檢查最後一位數字。

至於最終結果:邏輯是,只要你找到一個數字不在你的digitsArray,你就完成了:一個數字中至少有一個數字是不允許的。這表示將numbersOkay初始化爲true,並在找到壞數字時將其設置爲false

+0

這仍然是行不通的......我已經試過這個。 – rassko 2014-12-02 20:44:16

相關問題