Java帐号验证

Java帐号验证,java,arrays,calculation,Java,Arrays,Calculation,帐户验证公式图片 嗨 我正在尝试使用图片中所附的公式验证帐号 帐号将是字符串。最后,我需要检查并返回正确的帐号后 正确执行上述验证 帐号可能不同,但对于本例,我们可以使用21412900192413进行测试。 我只是设法用int数据类型将字符串和数组分开,以便更容易执行 计算。有人能帮我完成这项工作,根据图片中所附的公式验证帐户吗 上面请 到目前为止,我的代码是: public static void main(String[] args) throws Exception { Sys

帐户验证公式图片

我正在尝试使用图片中所附的公式验证帐号

帐号将是字符串。最后,我需要检查并返回正确的帐号后 正确执行上述验证

帐号可能不同,但对于本例,我们可以使用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);
      }


}
publicstaticvoidmain(字符串[]args)引发异常{
系统输出打印(“测试”);
字符串strAccount=“21412900192413”;
字符串fixedValues=“65432987654320”;
//账号
字符串sampleString=strAccount;
String[]stringArray=sampleString.split(“”);
int[]intArray=newint[stringArray.length];
对于(int i=0;i
谢谢各位,我终于拿到了。请让我知道是否有更简单的方法来实现这一点。如果可能的话,把它缩短

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;
      }
}
publicstaticvoidmain(字符串[]args)引发异常{
系统输出打印(“测试”);
布尔成功=假;
字符串strAccount=“21412900192413”;
字符串fixedValues=“65432987654320”;
//账号
字符串sampleString=strAccount;
String[]stringArray=sampleString.split(“”);
int[]intArray=newint[stringArray.length];
对于(int i=0;i
公共静态void main(字符串args[])引发异常{
系统输出打印(“测试”);
字符串strAccount=“21412900192418”;
字符串fixedValues=“65432987654320”;
//账号
String[]stringArray=strAccount.split(“”);
int[]intArray=newint[stringArray.length];
对于(int i=0;i    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;
    }