COMSATS University Islamabad: Lab Mid

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

COMSATS University

Islamabad

LAB MID

SUBMITTED BY:
AIZAN AHMED (SP21-BSE-008)
SECTION:
BSE-2A
SUBMITTED TO:
SIR MUZAFAR IQBAL
SUBJECT:
PROGRAMMING FUNDAMENTALS
DATED:
23-NOVEMBER-2021
QUESTION
Write a program that prompts the user to enter a credit
card number as a long integer. Display whether the number
is valid or invalid.
ANSWER:
import java.util.Scanner;

public class Main


{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter Credit Card number: ");
long num = input.nextLong();

System.out.println( num + " is " + (Valid(num) ? "valid" :


"invalid"));
}
public static boolean Valid(long num)
{
boolean isValid =
(getSize(num) >= 13 && getSize(num) <= 16) &&
(prefixMatch(num, 4) || prefixMatch(num, 5) ||
prefixMatch(num, 37) || prefixMatch(num, 6)) &&
((sumOfDoubleEven(num) + sumOfOdd(num)) % 10 == 0);

return isValid;
}
public static int sumOfDoubleEven(long num)
{
int sum = 0;
String num1 = num + "";
for (int i = getSize(num) - 2; i >= 0; i -= 2)
{
sum += getDigit(Integer.parseInt(num1.charAt(i) + "") * 2);
}
return sum;
}
public static int getDigit(int num)
{
if (num < 9)
return num;
else
return num / 10 + num % 10;
}
public static int sumOfOdd(long num)
{
int sum = 0;
String num2 = num + "";
for (int i = getSize(num) - 1; i >= 0; i -= 2)
{
sum += Integer.parseInt(num2.charAt(i) + "");
}
return sum;
}
public static boolean prefixMatch(long num, int d)
{
return getPrefix(num, getSize(d)) == d;
}
public static int getSize(long d)
{
String num3 = d + "";
return num3.length();
}
public static long getPrefix(long num, int k)
{
if (getSize(num) > k)
{
String num4 = number + "";
return Long.parseLong(num4.substring(0, k));
}
return num;
}
}

OUTPUT

You might also like