Java Code need help writing this program Get input from file. Ask user at least
ID: 3772473 • Letter: J
Question
Java Code
need help writing this program
Get input from file.
Ask user at least a single question and read at least one answer.
Use at least a single method from Math class.
Use at least one overloaded constructor.
Use at least one if-else-if, while, for, and enhanced for loops.
Use methods to pass and return identifiers and objects.
Pass arrays to/from methods.
Use at least a method to sort the array in the project.
Use inheritance and polymorphism.
Use exception handling.
Use input validation.
Pass the input and output files as commandline arguments.
Explanation / Answer
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Scanner;
public class CreditCard {
public static boolean checkCreditNumber(long n)
{
//*****************extract last digit of number.************************************
long digit=n%10;
int len=0;
String reversedNumber="";
//*************************Reversing the number************************************
while(n>0)
{ long rem=n%10;
n=n/10;
reversedNumber=reversedNumber+String.valueOf(rem);
len++;
}
long total1=0,total2=0;
//********************double the odd place digits and subtract from 9 if greater than 9 and add all the digits.********
for(int i=0;i<reversedNumber.length();i++)
{
if(i%2==0)//***********checking odd place*************
{//*************************Double the digit********************
long oddDigit=Long.parseLong(String.valueOf(reversedNumber.charAt(i)))*2;
if(oddDigit>9)//*****************checking of digit is greater than 9
oddDigit=oddDigit-9; //**************************Subtracting from 9
total1=total1+oddDigit;
}
else
total2=total2+Long.parseLong(String.valueOf(reversedNumber.charAt(i)));
}
total2=total2+total1; // adding all the digits
if((total2+digit)%10==0) //performing last operation in Luhn Formula
{
return true;
}
else
{
return false;
}
}
/* Test Class*/
public static void main(String[] args)
{
long validArray[]=new long[100];
long invalidArray[]=new long[100];
int indexV=0;
int indexIV=0;
BufferedReader br=null;
Scanner s=new Scanner(System.in);
//**********Ask user to enter fileName from where Data to be evaluate will be read ***************************
System.out.println("Enter File Name from which data to be read");
String inputFile=s.nextLine();
/* BufferedReader object to read data from input file.
* It will read credit Card number line by line until end-of-file.
* Process each number read through checkCreditNumber(). *
* */
try{
br=new BufferedReader(new FileReader(inputFile));
String line=br.readLine();
while(line!=null)
{
long number=Long.parseLong(line);
//**************Calling Method to process creditCard number**************************
boolean res=checkCreditNumber(number);
//**************It will store number in valid or invalid array depending upon processing result.*******************
if(res==true)
{
validArray[indexV++]=number;
}
else
invalidArray[indexIV++]=number;
line=br.readLine();
}
}
catch (Exception e) {
System.out.println(e);
}
//***********This code will write the data of array to specific files
try{
/*****************Creating two files to write output***********/
PrintWriter writer1 = new PrintWriter("valid_cards.txt", "UTF-8");
PrintWriter writer2 = new PrintWriter("Invalid_numbers.txt", "UTF-8");
StringBuilder fileData = new StringBuilder();
for(int i=0;i<indexV;i++)
{
String ll=String.valueOf(validArray[i]);
//**************This logic will check the issuer of credit card.Substring() method gives first 2 digits of number.
if(ll.substring(0, 2).equals("45")||ll.substring(0, 2).equals("44"))
{
fileData.append("Visa:");
}
else if(ll.substring(0, 2).equals("51")||ll.substring(0, 2).equals("53"))
fileData.append("MasterCard:");
else if(ll.substring(0, 2).equals("37")||ll.substring(0, 2).equals("34"))
fileData.append("American Express:");
else if(ll.substring(0, 2).equals("60"))
fileData.append("Discover:");
else if(ll.substring(0, 2).equals("31")||ll.substring(0, 2).equals("33"))
fileData.append("JCB:");
else if(ll.substring(0, 2).equals("54")||ll.substring(0, 2).equals("55"))
fileData.append("Dinner's club-North America:");
else if(ll.substring(0, 2).equals("30"))
fileData.append("Dinner's club-Carte Blanche:");
else if(ll.substring(0, 2).equals("36"))
fileData.append("Dinner's club-International:");
else if(ll.substring(0, 2).equals("58"))
fileData.append("Maestro:");
else if(ll.substring(0, 2).equals("67"))
fileData.append("LASER:");
else if(ll.substring(0, 2).equals("48")||ll.substring(0, 2).equals("49"))
fileData.append("Visa Electron:");
else if(ll.substring(0, 2).equals("63"))
fileData.append("InstaPayment:");
else
fileData.append("Unknown Issuer:");
fileData.append(ll+" ") ;
}
//Writing to file
writer1.write(fileData.toString());
writer1.close();
for(int j=0;j<indexIV;j++)
{
String ll=String.valueOf(invalidArray[j]);
if(ll.substring(0, 2).equals("45")||ll.substring(0, 2).equals("44"))
{
fileData.append("Visa:");
}
else if(ll.substring(0, 2).equals("51")||ll.substring(0, 2).equals("53"))
fileData.append("MasterCard:");
else if(ll.substring(0, 2).equals("37")||ll.substring(0, 2).equals("34"))
fileData.append("American Express:");
else if(ll.substring(0, 2).equals("60"))
fileData.append("Discover:");
else if(ll.substring(0, 2).equals("31")||ll.substring(0, 2).equals("33"))
fileData.append("JCB:");
else if(ll.substring(0, 2).equals("54")||ll.substring(0, 2).equals("55"))
fileData.append("Dinner's club-North America:");
else if(ll.substring(0, 2).equals("30"))
fileData.append("Dinner's club-Carte Blanche:");
else if(ll.substring(0, 2).equals("36"))
fileData.append("Dinner's club-International:");
else if(ll.substring(0, 2).equals("58"))
fileData.append("Maestro:");
else if(ll.substring(0, 2).equals("67"))
fileData.append("LASER:");
else if(ll.substring(0, 2).equals("48")||ll.substring(0, 2).equals("49"))
fileData.append("Visa Electron:");
else if(ll.substring(0, 2).equals("63"))
fileData.append("InstaPayment:");
else
fileData.append("Unknown Issuer:");
fileData.append(ll+" ") ;
}
//Writing to file
writer2.write(fileData.toString());
writer2.close();
}
catch (Exception e) {
System.out.println(e);
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.