有效或无效的条形码
Valid or invalid barcodes
计算奇数位(第一位、第三位、……、第十一位)的和乘以3。
计算偶数位(第二位、第四位、……、第十位)的数字之和,并将其与上一个结果相加。
如果第2步结果的最后一位为0,则0为校验位。否则,用 10 减去最后一位来计算校验位。
如果校验位与 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
.
计算奇数位(第一位、第三位、……、第十一位)的和乘以3。
计算偶数位(第二位、第四位、……、第十位)的数字之和,并将其与上一个结果相加。
如果第2步结果的最后一位为0,则0为校验位。否则,用 10 减去最后一位来计算校验位。
如果校验位与 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
.