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.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.