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

Need Help With Error Exception in thread \"main\" java.util.InputMismatchExcepti

ID: 3673339 • Letter: N

Question

Need Help With Error

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.nextDouble(Scanner.java:2413)
ÏÏ§Ï at Driver.main(Driver.java:112)
ÏϧÏ

===================================

import java.io.*;
import java.util.Scanner;

public class Driver
{
   public static void main(String[] args)
   {
   //local constants

   //local variables
   String fileName = "items.txt";
   Scanner scanner = null;
ItemsList itemsList = new ItemsList(5);
   int i = 0;
   boolean repeat = true;
   int choice = menu();
   String itemName;
   double price;
   int qty;
   String tmp;

   scanner=new Scanner(System.in);
  
//****************************************************************************************************//
  
try
   {
   scanner = new Scanner(new File(fileName));

   while(scanner.hasNextLine())
   {
   itemName = scanner.next();
   price = scanner.nextDouble();
   qty=scanner.nextInt();

   //Add the OneItem object to the itemList
   itemsList.addItem(new OneItem(itemName, price, qty));
   i++;
   }

   //close the file objct
   scanner.close();

   //print the list of the items in itemsList
   System.out.println(itemsList.toString());
   }
   catch (FileNotFoundException e)
   {
   System.out.println(e.getMessage());
   }

   //Create an instance of Scanner class
   scanner=new Scanner(System.in);

   while(repeat)
   {
   switch(choice)
   {
   //Add an item to the itemsList
   case 1:
   System.out.println("Enter item name : ");
String name=scanner.nextLine();
  
   System.out.println("Enter price : ");
   price = scanner.nextDouble();
  
   System.out.println("Enter quantity : ");
   qty=Integer.parseInt(scanner.nextLine());

   //Add the OneItem to the itemsList
   itemsList.addItem(new OneItem(name, price, qty));

   break;

   case 2:
   //print the list
   System.out.println(itemsList.toString());
   break;
  
   case 3:
   //Terminate the program
   System.out.println("Terminate the program.");
  
   //set repeat to false
   repeat=false;
   break;
  
   default:
   System.out.println("Incorrect option is selected.");
   break;
   }
   }

   writeToFile(itemsList);

   }


   private static void writeToFile(ItemsList itemsList)
   {

   //Create a file name called items.txt
   String filename="items.txt";
   //Create a variable of Class PrintWriter
   PrintWriter filewriter=null;

   try
   {
   //create an instance of PrintWriter
   filewriter=new PrintWriter(new File(filename));
   filewriter.println(itemsList.toString());
   //close the filewriter
   filewriter.close();
   }
   catch (IOException e)
   {
   System.out.println(e.getMessage());
   }


   }


   /**The method menu that prints the menu and prompst
   * for the menu item to select and return choice.*/
   private static int menu()
   {
   //Create an instance of Scanner class
   Scanner keyboard=new Scanner(System.in);
   System.out.println("Menu");
   System.out.println("1. Add item");
   System.out.println("2. Display items");
   System.out.println("3. Exit");
   System.out.println("Enter your choice");
   int choice=Integer.parseInt(keyboard.nextLine());
   return choice;

   }

}//end Driver class

===========================

public class OneItem
{
   //declare a variables
   private String name;
   private double price;
   private int quantity;

   //default constructor
   public OneItem()
   {
   name = "";
   price = 0;
   quantity = 0;
   }
   //parameter constructor
   public OneItem(String name, double price, int quantity)
   {
   this.name = name;
   this.price = price;
   this.quantity = quantity;
   }

   //toString
   public String toString() {
   return String.format("%-10s%-10.2f%-10d ", name,price,quantity);
   }
}//end of the OneItem class

====================================

public class ItemsList
{
   //declare variables
   private OneItem items[];
   private int size;
   private int count;

   //constructor to set items, size and count to zero
   public ItemsList()
   {
   items = null;
   size = 0;
   count = 0;
   }
   //Parameter constructor
   public ItemsList(int size)
   {
   items = new OneItem[size];

   for (int i = 0; i < items.length; i++)
   {
   items[i] = new OneItem();
   }

   this.size = size;
   count = 0;
   }
   //Add OneItem to the itemlist
   public void addItem(OneItem item)
   {
   if(items.length == count)
   {
   resize();
   items[count] = item;
   count++;
   }
   else
   {
   items[count] = item;
   count++;
   }
   }
  
   //Resize
   private void resize()
   {
   int oldsize = size;
   count = oldsize;
   int newsize = 2 * this.size;
   size = newsize;
  
   OneItem[] tempList = new OneItem[size];

   for (int i = 0; i < oldsize; i++)
tempList[i] = items[i];


   items = new OneItem[size];
   items = tempList;
   }

   //getSize
   public int getSize()
   {
   return count;
   }

   //toString
   public String toString()
   {
   String description = "";

   description += String.format("%-10s%-10s%-10s ", "Item","Price","Quantity");

   for (int i = 0; i <count; i++)
   {
   description += items[i].toString();
   }

   return description;
   }
}

Explanation / Answer

The error is because of, you are expecting a next input from file for price as a double value, in:

price = scanner.nextDouble();

But the next content from file is not actually a double, so getting this type mismatch error. Check for the file whether the next item in file is double or not.

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