2017-02-15 45 views
0

帳戶驗證公式圖片。Java帳號驗證

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

這裏是我想在我結束。希望這可以幫助。

乾杯!