2017-02-15 17 views
0

Konto Validierung Formel Bild.Java Kontonummer Validierung

Account Validation formula picture

Hallo,

Ich versuche, die Kontonummer mit der Formel in dem Bild angebracht zu validieren.

Die Kontonummer wäre in einer Zeichenfolge. Am Ende muss ich die korrekte Kontonummer überprüfen und zurückgeben, nachdem die obige Validierung korrekt durchgeführt hat.

Die Kontonummer würde unterschiedlich sein, aber für dieses Beispiel können wir testen, mit 21412900192413. Ich habe es geschafft nur für jeden mit int-Datentyp sowohl der Zeichenfolge Array zu trennen, so dass einfacher die Berechnung auszuführen. Kann mir jemand helfen, dies zu vervollständigen, um das Konto gemäß der Formel im Bild oben bitte zu bestätigen?

Mein Code so weit:

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

Also, was ist das Problem? –

+0

Sie haben gezeigt, dass Sie eine For-Schleife verwenden können. Jetzt benötigen Sie eine weitere Schleife, um sowohl über die Kontonummer-Ziffern als auch über Festwert-Arrays zu iterieren. Dann müssen Sie die Prüfziffernformel implementieren. Können Sie das versuchen und Ihren Ansatz zeigen? – Matt

+1

Ihre Frage sollte enthalten, was genau Sie fragen, wo Ihr Problem liegt. Bitte nehmen Sie sich einen Moment Zeit, um http://stackoverflow.com/help/mcve zu überprüfen – JChrist

Antwort

0

Danke Jungs, ich erhielt es zuletzt an. Bitte lassen Sie mich wissen, ob es einen einfacheren Weg gibt, dies zu erreichen. mach es kürzer wenn möglich.

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

Hier ist, was ich an meinem Ende versucht. Hoffe das hilft.

Prost !!!