有效或无效的条形码

Valid or invalid barcodes

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

    }

应该更像这样,因为你必须从用户那里输入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.