【问题标题】:Valid or invalid barcodes [closed]有效或无效的条形码[关闭]
【发布时间】:2015-12-02 00:19:02
【问题描述】:
  1. 计算奇数位(第一个、第三个、...、第十一个数字)的数字之和,然后将该和乘以 3。

  2. 计算偶数位(第二位、第四位、……、第十位)的数字之和,并将其添加到先前的结果中。

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

  4. 如果校验位与 12 位的最后一位匹配,则认为条形码正确。

    for(int j = 0; j

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

    }

【问题讨论】:

  • 您是否有任何背景,或者您只是做了一些功课,甚至不想研究它?
  • @Noctis 我研究了很多。我只是遇到了一些问题,这就是我来这里的原因。

标签: java arrays barcode barcode-scanner


【解决方案1】:

应该更像这样,因为你必须从用户那里输入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 处的条形码数字。

【讨论】:

  • 但输入取决于用户。我将首先是用户,然后她/他将输入的条形码数量取决于她输入的数量。就像我的第 1 步示例
  • @BeginnersProblem 编辑了我的答案。它还可以将条形码的每个数字存储在一个数组中。从用户那里输入条形码的数量不是问题。
  • 它有一个错误:((它在代码的这一行显示“int [] []无法转换为int []” int [] bar = new int [number] [12] ;
  • @BeginnersProblem 这只是一个语法问题。我编辑了它。使用int[][] bar = new int[number][12]
  • 1.计算奇数位(第一个、第三个、...、第十一个数字)的数字之和,然后将该和乘以 3。 2. 计算偶数位置(第二个、第四个、 …,第十位数字)并将其添加到先前的结果中。 3. 如果步骤 2 的结果的最后一位为 0,则 0 为校验位。否则,用 10 减去最后一位来计算校验位。 4.如果校验位与12位的最后一位匹配,则认为条形码正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多