【问题标题】:Need to check validation of an array by another "legal" digits array需要通过另一个“合法”数字数组检查数组的验证
【发布时间】:2014-12-03 09:32:11
【问题描述】:

我需要输入第一个数字数组的数量,而不是输入与数组长度一样多的数字,而不是需要询问数字数组的长度,并输入与长度一样多的所有输入。 这部分很容易并且做得很好。 现在我需要检查数字数组中的每个数字是否出现在数字数组中。 如果是打印一些东西,否则打印不[something..] 我对数字

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.");
                }
            }

我现在很绝望,很困惑。我知道这种方法不好并且不起作用,请有人可以帮助解决这个问题,正如我所提到的,我只有两位数和向上的数字有问题。所以这是重点应该发生的地方。 先进的谢谢。 !

【问题讨论】:

  • 如果您有办法将多位数字分解为各个数字,那会解决您的问题吗?
  • 显然这就是我需要做的......这就是我想要做的,并检查每次(数字中的一位)出现在数字验证数组中。
  • 请解释“不起作用”:一个带有输入、预期和实际输出的示例,将很有帮助。实际上,知道counterChecksdigitsCount 是什么也很好。
  • 例如,如果您为数字数组输入数字 14,而为数字数组输入数字 1 和 4,它应该是好的,如果数字数组是 1 和 3,那就不好了……反检查并且数字计数只是一种每次从数字数组中出现的数字中计算数字的方法,然后比较两者是否相等,但是我现在看到当countercheck不等于0时出现故障,它不会检查,所以这段代码被破坏了。我真的不知道该怎么办

标签: java arrays


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多