java - 如何在char中使用数学运算?

标签 java char

我正在做一个信用卡验证程序(如果您不熟悉该方法 http://9gag.com/gag/70886/cracking-the-credit-card-code ),这里是它的链接)。 问题是:当尝试在代码中执行“int multi”操作时,int 不会导入 charAt 操作处理的信用卡的实际值。我该如何解决这个问题,我做错了什么?另外 char 不允许数学运算,是吗?

import java.io.PrintStream;
import java.util.Scanner;

public class CreditCardCheck {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        PrintStream ps = System.out;
        int multi;

        System.out.println("Enter CreditCard number: ");
        String ccn  = sc.nextLine();

        if(ccn.length() < 16 || ccn.length() > 16 ){
            System.out.println("ccn is larger or less than 16-digits");//checking for 16-digit

        }else if(ccn.length() == 16){
            System.out.println("Validating CreditCard ");
        //multiplied numbers
        char zero = ccn.charAt(0);
        char second = ccn.charAt(2);
        char fourth = ccn.charAt(4);
        char sixth = ccn.charAt(6);
        char eight = ccn.charAt(8);
        char ten= ccn.charAt(10);
        char twelve = ccn.charAt(12);
        char fourteen = ccn.charAt(14);

        // added numbers

        char first = ccn.charAt(1);
        char third = ccn.charAt(3);
        char fifth= ccn.charAt(5);
        char seventh = ccn.charAt(7);
        char nineth = ccn.charAt(9);
        char eleven = ccn.charAt(11);
        char thirteen = ccn.charAt(13);
        char fifteen = ccn.charAt(15);

        //multiplication and addition
         multi = ((zero*2)+ first) + ((second*2)+third)
                + ((fourth*2)+ fifth) + ((sixth*2)+seventh) + ((eight*2)+nineth)
                + ((ten*2)+eleven)  + ((twelve*2)+thirteen) + ((fourteen*2)+fifteen);

        System.out.println(multi);

        }
    }
}

最佳答案

import java.io.PrintStream;
import java.util.Scanner;

public class CreditCardCheck {
    public static void main(String[] args){
        Scanner sc = new Sc`enter code here`anner(System.in);
        int multi;

        System.out.println("Enter CreditCard number: ");
        String ccn  = sc.nextLine();

        if(ccn.length() != 16 ){
            System.out.println("ccn is not equal to 16-digits");//checking for 16-digit
        }
        else if(ccn.length() == 16){
            System.out.println("Validating CreditCard ");

            //multiplied numbers
            int zero = Integer.parseInt(ccn.charAt(0)+"");
            int second = Integer.parseInt(ccn.charAt(2)+"");
            int fourth = Integer.parseInt(ccn.charAt(4)+"");
            int sixth = Integer.parseInt(ccn.charAt(6)+"");
            int eight = Integer.parseInt(ccn.charAt(8)+"");
            int ten= Integer.parseInt(ccn.charAt(10)+"");
            int twelve = Integer.parseInt(ccn.charAt(12)+"");
            int fourteen = Integer.parseInt(ccn.charAt(14)+"");

            // added numbers
            int first = Integer.parseInt(ccn.charAt(1)+"");
            int third = Integer.parseInt(ccn.charAt(3)+"");
            int fifth= Integer.parseInt(ccn.charAt(5)+"");
            int seventh = Integer.parseInt(ccn.charAt(7)+"");
            int nineth = Integer.parseInt(ccn.charAt(9)+"");
            int eleven = Integer.parseInt(ccn.charAt(11)+"");
            int thirteen = Integer.parseInt(ccn.charAt(13)+"");
            int fifteen = Integer.parseInt(ccn.charAt(15)+"");

            //multiplication and addition
            multi = ((zero*2)+ first) + ((second*2)+third) + ((fourth*2)+ fifth) + ((sixth*2)+seventh) + ((eight*2)+nineth) + ((ten*2)+eleven)  + ((twelve*2)+thirteen) + ((fourteen*2)+fifteen);

            System.out.println(multi);
            System.out.println(zero);

        }
    }
}

关于java - 如何在char中使用数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869606/

相关文章:

java - 如何在 Java 中比较字符串?

java - 使用OGNL自定义struts2 textfield标签的值

java - Karaf : Recommended way to uninstall/install API's bundle, 以及如何避免重影捆绑解析

将十六进制字符串(char[])转换为int?

c - 如何添加字符以达到 char[] 的最大大小

integer - 在 Arduino 中串行发送一个整数

c - 取消引用时,void 指针转换为 char 指针会崩溃

java - SQL LIMIT 与 JDBC 语句 setMaxRows。哪一个更好?

java - 线程Join()方法输出?

c++ - 为什么 C 和 C++ 如此讨厌带符号的字符?