Question
I am receiving errors. Not sure what is wrong. Project 17-2: Convert lengths Console Welcome to the Length Converter 1 - Convert a length 2
I am receiving errors. Not sure what is wrong.
Project 17-2: Convert lengths
Console
Welcome to the Length Converter
1 - Convert a length
2 - Add a type of conversion
3 - Delete a type of conversion
4 - Exit
Enter menu number: 1
1 - Miles to Kilometers: 1.6093
2 - Kilometers to Miles: 0.6214
3 - Inches to Centimeters: 2.54
Enter conversion number: 2
Enter Kilometers: 10
10.0 Kilometers = 6.214 Miles
1 - Convert a length
2 - Add a type of conversion
3 - Delete a type of conversion
4 - Exit
Enter menu number: 2
Enter 'From' unit: Centimeters
Enter 'To' unit: Inches
Enter the conversion ratio: .3937
This entry has been saved.
1 - Convert a length
2 - Add a type of conversion
3 - Delete a type of conversion
4 - Exit
Enter menu number: 1
1 - Miles to Kilometers: 1.6093
2 - Kilometers to Miles: 0.6214
3 - Inches to Centimeters: 2.54
4 - Centimeters to Inches: 0.3937
Enter conversion number: 4
Enter Centimeters: 2.54
2.54 Centimeters = 1 Inches
1 - Convert a length
2 - Add a type of conversion
3 - Delete a type of conversion
4 - Exit
Enter menu number: 4
Goodbye.
Project 17-2: Convert lengths (cont.)
Operation
This application begins by displaying a main menu with four items.
If the user chooses the first main menu item, the application displays a menu of possible conversions. After the user selects a conversion, the application prompts the user to enter a unit of measurement, calculates the conversion, displays the result, and displays the main menu again.
If the user chooses the second main menu item, the application prompts the user to enter the values for a new conversion, saves this new conversion to a file, and displays a message to the user.
If the user chooses the third main menu item, the application displays a menu of possible conversions. After the user selects the conversion, the application deletes that conversion from the file, displays a message to the user, and displays the main menu again.
If the user chooses the fourth main menu item, the application displays a goodbye message and exits.
Specifications
Create a class named Conversion that can store information about a conversion, including the from unit, from value, to unit, to value, and conversion ratio. This class should also contain the methods that perform the conversion calculations and return the results as a formatted string.
Create a class named ConversionIO that contains two methods: one that reads an array list of Conversion objects from a file and another that writes an array list of Conversion objects to a file. For example:
public static ArrayList
public static void saveConversions(ArrayList
Store the list of conversions in a text file named conversion_types.txt in the same directory as the ConversionIO class. If the conversion_types.txt file doesnt exist, the ConversionIO class should create it. This class should use buffered I/O streams, and it should close all I/O streams when theyre no longer needed.
Create a class named ConversionsApp that displays the menus and responds to the users choices.
Use the Console class shown in chapter 8 or a variation of it to get the users entries.
Conversion.java
package Conversion;
import java.text.DecimalFormat;
public class Conversion {
String fromUnit;
String toUnit;
double conversionRatio;
//Creates varibales to store conversion data
public Conversion(String fromUnit, String toUnit, double conversionRatio) {
super();
this.fromUnit = fromUnit;
this.toUnit = toUnit;
this.conversionRatio = conversionRatio;
}
//Displays type of conversion made
public String getType() {
return fromUnit + " To " + toUnit + ":" + conversionRatio;
}
//Calculates conversion and stores as
public String conversionCalc(double fromValue) {
double toValue = fromValue * conversionRatio;
DecimalFormat decFormat = new DecimalFormat("#.##");
toValue = Double.valueOf(decFormat.format(toValue));
return String.valueOf(toValue);
}
}
ConversionIO.java
package Conversion;
import java.util.*;
import java.io.*;
class ConversionIO{
public static ArrayList
ArrayList
try{
Scanner in = new Scanner(new File("conversion_types.txt"));
String from, to;
double ratio;
while(in.hasNextLine()){
from = in.next();
to = in.next();
ratio = in.nextDouble();
temp.add(new Conversion(from, to, ratio));
}
}
catch(FileNotFoundException e){
System.out.println("conversion_types.txt not found");
}
return temp;
}
public static void saveConversions(ArrayList
try{
PrintWriter out = new PrintWriter("conversion_types.txt");
for(Conversion item: conversions){
out.println(item.fromUnit+" "+item.toUnit+" "+item.conversionRatio);
}
out.close();
}
catch(FileNotFoundException e){
System.out.println("Unable to create file");
}
}
}
ConversionApp.java
package Conversion;
import java.util.*;
public class ConversionsApp {
public static void main(String args[]) {
ArrayList
System.out.println("Welcome to the Length Converter: ");
int choice, i;
Scanner in = new Scanner(System.in);
do {
System.out.println(" 1 - Convert a length");
System.out.println("2 - Add a type of conversion");
System.out.println("3 - Delete a type of conversion");
System.out.println("4 - Exit");
System.out.println("Enter menu number: ");
choice = in.nextInt();
switch (choice) {
case 1:
i = 0;
for (Conversion item : list) {
System.out.println(i + 1 + " - " + item.getType());
i++;
}
int number;
System.out.println("Enter conversion number: ");
number = in.nextInt();
if (number <= list.size()) {
double inp;
System.out.print("Enter " + list.get(number - 1).fromUnit + ": ");
inp = in.nextDouble();
System.out.println(inp + " " + list.get(number - 1).fromUnit + " = "
+ list.get(number - 1).conversionCalc(inp) + " " + list.get(number - 1).toUnit);
} else {
System.out.println("Invalid Conversion");
}
break;
case 2:
String from, to;
double ratio;
System.out.print("Enter 'From' unit: ");
from = in.next();
System.out.print("Enter 'To' unit: ");
to = in.next();
System.out.print("Enter the conversion raio: ");
ratio = in.nextDouble();
list.add(new Conversion(from, to, ratio));
ConversionIO.saveConversions(list);
System.out.println("This entry has been saved");
break;
case 3:
i = 0;
for (Conversion item : list) {
System.out.println(i + 1 + " - " + item.getType());
i++;
}
int n;
System.out.println("Enter conversion number that you want to delete: ");
n = in.nextInt();
if (n <= list.size()) {
list.remove(n - 1);
ConversionIO.saveConversions(list);
System.out.println("Successfully conversion deleted");
} else {
System.out.println("Invalid Conversion");
}
break;
case 4:
System.out.println("Goodbye");
System.exit(1);
default:
System.out.println("Invalid choice");
}
} while (choice != '4');
}
}
Output
debug:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at Conversion.ConversionIO.getConversions(ConversionIO.java:23)
at Conversion.ConversionsApp.main(ConversionsApp.java:9)
C:\Users ame\AppData\Local\NetBeans\Cache\8.2\executor-snippets\debug.xml:83: Java returned: 1
BUILD FAILED (total time: 0 seconds)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started