2017-02-15 15 views
0

Рисунок формулы валидации счета.Номер учетной записи Java Validation

Account Validation formula picture

Привет,

Я пытаюсь проверить номер счета, используя формулу прикрепленную на картинке.

Номер счета будет в строке. В конце мне нужно проверить и вернуть правильный номер учетной записи после того, как правильно проведет проверку.

Номер счета будет отличаться, но для этого примера мы можем проверить с 21412900192413. я только удалось отделить обе строки в массив с типом данных INT для каждого так, что легче выполнить расчет. Может ли кто-нибудь помочь мне заполнить это, чтобы подтвердить учетную запись в соответствии с формулой, приведенной на картинке выше, пожалуйста?

Мой код до сих пор:

public static void main(String[] args) throws Exception { 
    System.out.println("test"); 
    String strAccount = "21412900192413"; 
    String fixedValues = "65432987654320"; 
    //for account number 
    String sampleString = strAccount; 
     String[] stringArray = sampleString.split(""); 
     int[] intArray = new int[stringArray.length]; 
     for (int i = 0; i < stringArray.length; i++) { 
     String numberAsString = stringArray[i]; 
     intArray[i] = Integer.parseInt(numberAsString); 
     } 
     System.out.println("Number of integers: " + intArray.length); 
     System.out.println("The integers are:"); 
     for (int number1 : intArray) { 
     System.out.println(number1); 
     } 

    //for fixed values 
    String sampleFixedValues = fixedValues; 
     String[] stringArray2 = sampleFixedValues.split(""); 
     int[] intArray2 = new int[stringArray2.length]; 
     for (int i = 0; i < stringArray2.length; i++) { 
     String numberAsString = stringArray2[i]; 
     intArray2[i] = Integer.parseInt(numberAsString); 
     } 
     System.out.println("Number of fixed values: " + intArray2.length); 
     System.out.println("The fixed values are:"); 
     for (int number2 : intArray2) { 
     System.out.println(number2); 
     } 


} 
+1

поэтому в чем проблема? –

+0

Вы продемонстрировали, что можете использовать цикл 'for'. Теперь вам нужен еще один цикл для итерации как цифр номера счета, так и массивов с фиксированными значениями. Затем вам нужно реализовать формулу контрольной цифры. Можете ли вы попробовать это и показать свой подход? – Matt

+1

Ваш вопрос должен включать то, что именно вы спрашиваете, где лежит ваша проблема. Пожалуйста, найдите минутку, чтобы проверить http://stackoverflow.com/help/mcve – JChrist

ответ

0

Спасибо, ребята, я получил его в конце концов. Пожалуйста, дайте мне знать, если есть более простой способ достичь этого. сделайте его короче, если это возможно.

public static void main(String[] args) throws Exception { 
    System.out.println("test"); 
    boolean success = false; 
    String strAccount = "21412900192413"; 
    String fixedValues = "65432987654320"; 
    //for account number 
    String sampleString = strAccount; 
     String[] stringArray = sampleString.split(""); 
     int[] intArray = new int[stringArray.length]; 
     for (int i = 0; i < stringArray.length; i++) { 
     String numberAsString = stringArray[i]; 
     intArray[i] = Integer.parseInt(numberAsString); 
     } 
     System.out.println("Number of integers: " + intArray.length); 
     System.out.println("The integers are:"); 
     for (int number1 : intArray) { 
     System.out.println(number1); 
     } 

    //for fixed values 
    String sampleFixedValues = fixedValues; 
     String[] stringArray2 = sampleFixedValues.split(""); 
     int[] intArray2 = new int[stringArray2.length]; 
     for (int i = 0; i < stringArray2.length; i++) { 
     String numberAsString = stringArray2[i]; 
     intArray2[i] = Integer.parseInt(numberAsString); 
     } 
     System.out.println("Number of fixed values: " + intArray2.length); 
     System.out.println("The fixed values are:"); 
     for (int number2 : intArray2) { 
     System.out.println(number2); 
     } 
     //for total 
     int totalSum = 0; 
     int[] total = new int[stringArray2.length]; 
     for (int j = 0; j < stringArray2.length; j++) { 
      total[j] = intArray[j] * intArray2[j]; 
      System.out.println("Total: " + total[j]); 
      totalSum = totalSum + total[j]; 
     } 
     System.out.println("TotalSum: " + totalSum); 

     //Check Digit Formula = 10 – (Total Modulus 11/Total%11) 
     int digitFormula = 10 - (totalSum % 11); 
     System.out.println("digitFormula: " + digitFormula); 
     int lastNumber = intArray[intArray.length-1]; 
     System.out.println("lastNumber: " + lastNumber); 
     if(digitFormula == lastNumber){ 
      success = true; 
     } 
} 
0
public static void main(String args[]) throws Exception { 

     System.out.println("test"); 
     String strAccount = "21412900192418"; 
     String fixedValues = "65432987654320"; 
     // for account number 
     String[] stringArray = strAccount.split(""); 
     int[] intArray = new int[stringArray.length]; 
     for (int i = 0; i < stringArray.length; i++) { 
      String numberAsString = stringArray[i]; 
      intArray[i] = Integer.parseInt(numberAsString); 
     } 
     System.out.println("Number of integers: " + intArray.length); 
     System.out.println("The integers are:"); 
     for (int number1 : intArray) { 
      System.out.println(number1); 
     } 

     // for fixed values 
     String sampleFixedValues = fixedValues; 
     String[] stringArray2 = sampleFixedValues.split(""); 
     int[] intArray2 = new int[stringArray2.length]; 
     for (int i = 0; i < stringArray2.length; i++) { 
      String numberAsString = stringArray2[i]; 
      intArray2[i] = Integer.parseInt(numberAsString); 
     } 
     System.out.println("Number of fixed values: " + intArray2.length); 
     System.out.println("The fixed values are:"); 
     for (int number2 : intArray2) { 
      System.out.println(number2); 
     } 

     int total = calculateTotal(intArray, intArray2); 

     if (checkDigit(intArray, total)) { 
      System.out.println("Valid Account Number..."); 
     } else { 
      System.out.println("Invalis Account Number..."); 
     } 
    } 

    private static boolean checkDigit(int[] original, int total) { 
     int digit = 10 - (total % 11); 

     if (original[original.length - 1] == digit) 
      return true; 

     return false; 
    } 

    private static int calculateTotal(int[] original, int[] fixed) throws Exception { 
     if (original.length != fixed.length) { 
      throw new Exception("Account number length mismatch with Fixed Values."); 
     } 

     int total = 0; 
     for (int i = 0; i < original.length; i++) { 
      int multi = original[i] * fixed[i]; 
      total += multi; 
     } 
     return total; 
    } 

Вот что я пытался на моем конце. Надеюсь это поможет.

Cheers !!!

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

  • Нет связанных вопросов^_^