I'm trying to validate an input that should only accept customerType
as R
or C
. It is not case sensitive. I get an error with my code, it says my String customerType
is missing:
import java.text.NumberFormat;
import java.util.InputMismatchException;
import java.util.Scanner;
public class InvoiceApp
{
public static void main(String[] args)
{
// Begin input
Scanner sc = new Scanner(System.in);
String choice = "y";
while (!choice.equalsIgnoreCase("n"))
{
// get the input from the user
// create catch block for customerType(r or c)
try
{
System.out.print("Enter customer type (r/c): ");
String customerType = sc.next();
}
catch (InputMismatchException e)
{
if (customerType != "r" || "c")
{
sc.next();
System.out.println("Enter a valid customer type r or c");
continue;
}
else
{
System.out.print("Enter subtotal: ");
}
}
double subtotal = sc.nextDouble();
// get the discount percent
double discountPercent = 0;
if (customerType.equalsIgnoreCase("R"))
{
if (subtotal < 100)
discountPercent = 0;
else if (subtotal >= 100 && subtotal < 250)
discountPercent = .1;
else if (subtotal >= 250)
discountPercent = .2;
}
else if (customerType.equalsIgnoreCase("C"))
{
if (subtotal < 250)
discountPercent = .2;
else
discountPercent = .3;
}
else
{
discountPercent = .1;
}
// calculate the discount amount and total
double discountAmount = subtotal * discountPercent;
double total = subtotal - discountAmount;
// format and display the results
NumberFormat currency = NumberFormat.getCurrencyInstance();
NumberFormat percent = NumberFormat.getPercentInstance();
System.out.println("Discount percent: " + percent.format(discountPercent)
+ "\n" + "Discount amount: " + currency.format(discountAmount) + "\n"
+ "Total: " + currency.format(total) + "\n");
// see if the user wants to continue
System.out.print("Continue? (y/n): ");
choice = sc.next();
System.out.println();
}
}
}