Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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);
}

      
   }
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote