2015-09-06 3 views
-5
  1. Вычислить сумму цифр в нечетных позициях (первый, третий, ..., одиннадцатый цифр) и умножить эту сумму на 3.действительной или недействительной штрих-коды

  2. Вычислить сумму из цифры в четных позициях (вторая, четвертая, ..., десятая цифры) и добавьте это к предыдущему результату.

  3. Если последняя цифра результата этапа 2 равна 0, то 0 - контрольная цифра. В противном случае вычтите последнюю цифру из 10 для вычисления контрольной цифры.

  4. Если контрольная цифра соответствует последней цифре 12-значного числа, штрих-код считается правильным.

    для (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); 
        } 
    

    }

+2

У вас есть какой-либо фон, или вы просто получили домашнюю работу и не хотели даже исследовать его? – Noctis

+0

@Noctis Я много исследований. У меня были проблемы с этим, поэтому я пришел сюда. – BeginnersProblem

ответ

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 в этой ситуации.

Incase вы хотите сохранить каждую цифру в массиве, вы должны использовать многомерный массив, который в значительной степени должно быть, как показано ниже:

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

И вы будете иметь 2D массив [x][] где x будет индекс номер от 0-(number-1) конкретного штрих-кода и [x][0]-[x][11] - это цифры штрих-кода с номером индекса x.

+0

Но вход зависит от пользователя. Сначала я буду пользователем, тогда количество штрих-кодов, которые он/она войдет, зависит от того, сколько она вступила. Как мой пример Шаг 1 – BeginnersProblem

+0

@BeginnersProblem Отредактировал мой ответ. Он также может хранить каждую цифру штрих-кода в массиве. Принимая ввод, количество штрих-кодов от пользователя не является проблемой. –

+0

имеет ошибку: ((он говорит: «int [] [] не может быть преобразован в int []» в этой строке кода int [] bar = new int [number] [12]; – BeginnersProblem

Смежные вопросы