有效或无效的条形码

时间:2015-09-06 08:59:57

标签: java arrays barcode barcode-scanner

  1. 计算奇数位(第一,第三,......,第十一位)中的数字之和,并将此总和乘以3.

  2. 计算偶数位置(第二,第四,......,第十位)的数字之和,并将其添加到上一个结果中。

  3. 如果步骤2的结果的最后一位为0,则0为校验位。否则,从10中减去最后一位数来计算校验位。

  4. 如果校验位与12位数的最后一位相匹配,则表示条形码是正确的。

    for(int j = 0; j< = 10; j = j + 2)        {

         sumOdd = sumOdd + bar[0][j];
    
       }
    
       result1 = sumOdd * 3;
    
       for(int j = 1; j <= 11; j = j + 2)
       {
         sumEven = sumEven + bar[0][j];
    
    
       }
       result2 = result1 + sumEven;
    
       if(result2 % 10 == 0)
       {
         checkDigit = 0;
       }
       else
       {
        checkDigit = 10 - result2 % 10;
       }
    
       if(checkDigit == bar[0][11])
       {
        System.out.printf("validated\n");
        //System.out.printf("Step1 Result: %d\n", result1);
        //System.out.printf("Step2 Result: %d\n", result2);
       }
       else 
       {
        System.out.printf("error in barcode\n");
        //System.out.printf("Step1 Result: %d\n", result1);
        //System.out.printf("Step2 result: %d\n", result2);
       }
    

    }

1 个答案:

答案 0 :(得分:0)

它应该更像是这样,因为您必须从用户输入n次:

int n = myScan.nextInt();
int[] bar = new int[n]; 
for (int i=0; i<bar.length; i++) {
        int n = myScan.nextInt(); 
        bar[i] = n; 
}

在这种情况下,我考虑使用long代替int

如果你想将每个数字存储在一个数组中,你必须使用一个多维数组,几乎应该如下所示:

int number = myScan.nextInt();
int[][] bar = new int[number][12];

for (int i=0; i<bar.length; i++) {
    for (int j=0; j<bar[i].length; j++) {
            int n = myScan.nextInt(); 
            bar[i][j] = n; 
    }

您将拥有一个二维数组[x][],其中x将是特定条形码的0-(number-1)的索引号,[x][0]-[x][11]将是索引处的条形码数字号码x