how to add two integers in a number

 Refresh December 2018 Views 442 time
1

I am writing a credit card validation program. I am trying to see if a product is more that 1 digit long (i.e: 10), if it is I need to add the two integers together. For example 10 would be `1 + 0`, which equals 1, how do I do this?

This is what I have so far:

``````public class CreditCard{
public static void main(String args[]){

//Take in a 16 digit credit card number
Scanner in=new Scanner (System.in);
int num[]=new int[16];
int i=0;

for (i=0;i<num.length;i++) {
System.out.println("Please enter a 16 digit credit card number");
num[i]=in.nextInt();

}
if (num.length < 16 || num.length > 16)
{
System.out.println("Invalid");
}
else
{

//multiply every other number by 2, starting with place 16, and find the sum(sum1)
int num1 = (num[16] * 2);
int num2 = (num[14] * 2);
int num3 = (num[12] * 2);
int num4 = (num[10] * 2);
int num5 = (num[8] * 2);
int num6 = (num[6] * 2);
int num7 = (num[4] * 2);
int num8 = (num[2] * 2);

if( num1 > 9)

int sum1 = (num[16] * 2) + (num[14] * 2) + (num[12] * 2) + (num[10] * 2) + (num[8] * 2) + (num[6] * 2) + (num[4] *2) + (num[2] *2);
int sum2 = (num[15] + num[13] + num[11] + num[9] + num[7] + num[5] + num[3] + num[1]);

int totalSum = sum1 + sum2;
if (totalSum % 10 != 0)
{
System.out.println("Invalid card number!!");
}
else

{
System.out.println(" Valid Credit Card Number!!");

}

}
}
}
``````

0

You might want to look into splitting an integer into digits first: split int value into separate digits

0

If Blender's comment is correct, you could do it like this:

``````int num=123; // or whatever
String str=Integer.toString(num);
int total=0;
if(str.length()>1){
for(int i=0; i<str.length(); i++){
total+=Integer.parseInt(str.charAt(i));
}
}
System.out.println(total);
``````

(I haven't run this, so there are probably some errors in there)

0

I think a simple way would be

``````if (num1 > 9) num1 = num1-9
``````

This works if you look at how the original numbers look after multiplying by 2.

``````num  num*2  result
0    0      0
1    2      2
2    4      4
3    6      6
4    8      8
5    10     1
6    12     3
7    14     5
8    16     7
9    18     9
``````
2

Rather than re-inventing the wheel you could have a look at the Luhn algorithm which is a widely used checksum algorithim used to validate credit card numbers. Here is a Java version.

1

It looks like you're trying to implement the Luhn checkdigit algorithm .

Try the apache commons `LuhnCheckDigit()` utility method of the Apache commons-validator library.

0

I think your code to calculate the total should be

``````int totalSum = 0;
for (i=0; i<num.length; i+=2) {
totalSum+=num[i+1];
if (num[i+2]>4) {
totalSum+=1+((num[i+2]*2) % 10);
} else {
totalSum+=num[i+2]*2;
}
}
``````

This avoids any slow string conversions.