keep getting this error Exception in thread main javalangNul

keep getting this error Exception:

in thread \"main\" java.lang.NullPointerException

at CreditCard.validateCardNum(CreditCard.java:33)

at CreditCard.main(CreditCard.java:135)

here is the code

inside the CreditCardEvaluation.txt is below:

3158539628375348

3337465828248404

3112804683572030

3112804683572033

5435528978467581

code is below:

import java.io.File;

import java.io.PrintWriter;

import java.util.Scanner;

public class CreditCard

{

String value;

char valArray[];

int valid[];

int invalid[];

int reverse[];

int multipleOdd[];

int addDigits[];

int dropLast;

// constructor

public CreditCard(String cardNum)

{

if (cardNum.length() >= 13 && cardNum.length() <= 19)

{

value = cardNum;

}

valArray = new char[cardNum.length()];

valid = new int[valArray.length];

reverse = new int[valArray.length];

multipleOdd = new int[valArray.length];

addDigits = new int[valArray.length];

dropLast = 0;

}

// validateCardNum method that validates the card number and returns

// boolean value

public boolean validateCardNum()

{

valArray = value.toCharArray();

for (int i = 0; i < valArray.length; i++)

{

valid[i] = (int) valArray[i];

}

for (int i = 0; i < valArray.length; i++)

{

valid[i] = Integer.parseInt(String.valueOf(valArray[valid.length - 1]));

}

dropLast = valid[valid.length - 1];

reverse = reverseArray(valid);

multipleOdd = multiplyAllOdd(reverse);

addDigits = sumDigits(multipleOdd);

int sum = 0;

for (int i = 0; i < addDigits.length; i++)

{

sum = sum + addDigits[i];

}

boolean isValid = isValidSum(sum, dropLast);

return isValid;

}

// reverseArray method that returns a integer array

public int[] reverseArray(int valid[])

{

for (int i = 0; i < valid.length; i++)

{

reverse[i] = valid[valid.length - 1 - i];

}

return reverse;

}

// multiplyAllOdd method that returns a integer array

public int[] multiplyAllOdd(int valid[])

{

for (int i = 0; i < valid.length; i++) { if (i % 2 == 0)

{

multipleOdd[i] = valid[i] * 2;

}

else { multipleOdd[i] = valid[i];

}

}

return multipleOdd;

}

// sumDigits method that returns a integer array

public int[] sumDigits(int valid[])

{

int sum = 0;

for (int i = 0; i < valid.length; i++)

{

sum = 0;

if (valid[i] >= 10) { sum = valid[i] / 10 + valid[i] % 10; addDigits[i] = sum;

}

else

{

addDigits[i] = valid[i];

}

}

return addDigits;

}

// isValidSum method that returns a boolean value

public boolean isValidSum(int sum, int dropLast)

{

if ((sum + dropLast) % 10 == 0)

{

return true;

}

return false;

}

// getCardIssuer method that returns a String value

public String getCardIssuer()

{

if (value.substring(0, 2).equals(\"34\") || value.substring(0, 2).equals(\"37\"))

return \"American Express\";

else if (value.substring(0, 2).equals(\"60\") || value.substring(0, 2).equals(\"62\") || value.substring(0, 2).equals(\"64\") || value.substring(0, 2).equals(\"65\"))

return \"Discover\";

else if (value.substring(0, 2).equals(\"51\") || value.substring(0, 2).equals(\"52\") || value.substring(0, 2).equals(\"53\") || value.substring(0, 2).equals(\"54\") || value.substring(0, 2).equals(\"51\"))

return \"MasterCard\";

else

if (value.substring(0, 1).equals(\"4\")) return \"Visa\";

else

return \"No Issuer\";

}

// main method

public static void main(String args[]) throws Exception

{

Scanner in = new Scanner(new File(\"CreditCardEvaluation.txt\"));

PrintWriter pwInvalid = new PrintWriter(new File(\"invalid_numbers.txt\"));

PrintWriter pwValid = new PrintWriter(new File(\"valid_cards.txt\"));

String value;

CreditCard cc;

// loop till end of the file

while (in.hasNextLine())

{

value = in.nextLine();

cc = new CreditCard(value);

// write the valid card numbers into valid text file

if (cc.validateCardNum())

{

pwValid.println(cc.getCardIssuer() + \"\\t\" + value + \"\\t\" + value.length());

}
// write the invalid card numbers into invalid text file

else pwInvalid.println(cc.getCardIssuer() + \"\\t\" + value + \"\\t\" + value.length());

}

// close all the files

pwInvalid.close();

pwValid.close();

in.close();

}

}

Solution

Please try giving full file path like given below:

import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;
public class CreditCard
{
String value;
char valArray[];
int valid[];
int invalid[];
int reverse[];
int multipleOdd[];
int addDigits[];
int dropLast;
// constructor
public CreditCard(String cardNum)
{
if (cardNum.length() >= 13 && cardNum.length() <= 19)
{
value = cardNum;
}
valArray = new char[cardNum.length()];
valid = new int[valArray.length];
reverse = new int[valArray.length];
multipleOdd = new int[valArray.length];
addDigits = new int[valArray.length];
dropLast = 0;
}
// validateCardNum method that validates the card number and returns
// boolean value
public boolean validateCardNum()
{
valArray = value.toCharArray();
for (int i = 0; i < valArray.length; i++)
{
valid[i] = (int) valArray[i];
}
for (int i = 0; i < valArray.length; i++)
{
valid[i] = Integer.parseInt(String.valueOf(valArray[valid.length - 1]));
}
dropLast = valid[valid.length - 1];
reverse = reverseArray(valid);
multipleOdd = multiplyAllOdd(reverse);
addDigits = sumDigits(multipleOdd);
int sum = 0;
for (int i = 0; i < addDigits.length; i++)
{
sum = sum + addDigits[i];
}
boolean isValid = isValidSum(sum, dropLast);
return isValid;
}
// reverseArray method that returns a integer array
public int[] reverseArray(int valid[])
{
for (int i = 0; i < valid.length; i++)
{
reverse[i] = valid[valid.length - 1 - i];
}
return reverse;
}
// multiplyAllOdd method that returns a integer array
public int[] multiplyAllOdd(int valid[])
{
for (int i = 0; i < valid.length; i++) { if (i % 2 == 0)
{
multipleOdd[i] = valid[i] * 2;
}
else { multipleOdd[i] = valid[i];
}
}
return multipleOdd;
}
// sumDigits method that returns a integer array
public int[] sumDigits(int valid[])
{
int sum = 0;
for (int i = 0; i < valid.length; i++)
{
sum = 0;
if (valid[i] >= 10) { sum = valid[i] / 10 + valid[i] % 10; addDigits[i] = sum;
}
else
{
addDigits[i] = valid[i];
}
}
return addDigits;
}
// isValidSum method that returns a boolean value
public boolean isValidSum(int sum, int dropLast)
{
if ((sum + dropLast) % 10 == 0)
{
return true;
}
return false;
}
// getCardIssuer method that returns a String value
public String getCardIssuer()
{
if (value.substring(0, 2).equals(\"34\") || value.substring(0, 2).equals(\"37\"))
return \"American Express\";
else if (value.substring(0, 2).equals(\"60\") || value.substring(0, 2).equals(\"62\") || value.substring(0, 2).equals(\"64\") || value.substring(0, 2).equals(\"65\"))
return \"Discover\";
else if (value.substring(0, 2).equals(\"51\") || value.substring(0, 2).equals(\"52\") || value.substring(0, 2).equals(\"53\") || value.substring(0, 2).equals(\"54\") || value.substring(0, 2).equals(\"51\"))
return \"MasterCard\";
else
if (value.substring(0, 1).equals(\"4\")) return \"Visa\";
else
return \"No Issuer\";
}
// main method
public static void main(String args[]) throws Exception
{
Scanner in = new Scanner(new File(\"C:\\\\Users\\\\Desktop\\\\chegg\\\\CreditCardEvaluation.txt\"));
PrintWriter pwInvalid = new PrintWriter(new File(\"C:\\\\Users\\\\Desktop\\\\chegg\\\\invalid_numbers.txt\"));
PrintWriter pwValid = new PrintWriter(new File(\"C:\\\\Users\\\\Desktop\\\\chegg\\\\valid_cards.txt\"));
String value;
CreditCard cc;
// loop till end of the file
while (in.hasNextLine())
{
value = in.nextLine();
//System.out.println(value);
cc = new CreditCard(value);
// write the valid card numbers into valid text file
if (cc.validateCardNum())
{
pwValid.println(cc.getCardIssuer() + \"\\t\" + value + \"\\t\" + value.length());
}
// write the invalid card numbers into invalid text file
else pwInvalid.println(cc.getCardIssuer() + \"\\t\" + value + \"\\t\" + value.length());
}
// close all the files
pwInvalid.close();
pwValid.close();
in.close();
}
}

keep getting this error Exception: in thread \
keep getting this error Exception: in thread \
keep getting this error Exception: in thread \
keep getting this error Exception: in thread \
keep getting this error Exception: in thread \
keep getting this error Exception: in thread \
keep getting this error Exception: in thread \

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site