The code below tries to read membershipid and a choice of membership from user. user enter -1 to indicate end of program. system will now display sum and exit. I keept getting the error below which is very strange:
package task2;
import java.util.HashMap;
import java.util.Scanner;
public class Task2 {
// i will make scanner class object accessible to current class
static Scanner read = new Scanner(System.in);
static HashMap<String, Double> storeMembers = new HashMap<>();
static int choice;
static String membershipID;
static double amount;
static double total;
public static void displaySum() {
for (Double sum : storeMembers.values()) {
amount += sum;
}
}
public static void main(String[] args) {
System.out.println("Enter MembershipID eg: JPU123D");
System.out.println("For Standard Membership, Enter: 1");
System.out.println("For Concession Membership,Enter: 2");
while (read.hasNext()) {
choice = read.nextInt();
membershipID = read.nextLine();
if (choice == 1) {
if (storeMembers.containsKey(membershipID)) {
amount = Membership.standardMemberAnnualfee();
storeMembers.put(membershipID, amount);
}
} else {
amount = Membership.standardMemberAnnualfee() + Membership.standardMemberjoinfee();
storeMembers.put(membershipID, amount);
}
if (choice == -1) {
System.out.println("Now closing the application!");
System.out.println("Total fees:");
displaySum();
System.exit(1);
}
}// end while
}
}
error says:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at task2.Task2.main(Task2.java:28)
Java Result: 1
BUILD SUCCESSFUL (total time: 8 seconds)
can any one tell me what am i doing wrong because my scanner object i believe is reading the correct input type.