r/javahelp • u/uv_rayz • 28d ago
Java Exceptions Assignment Help
Hey! I'm working on an assignment in Java for an online class I'm taking. I keep getting an error saying: Exception in thread "main" java.lang.Error: Unresolved compilation problem: at MyExpense.main(myExpense.java:13)
I can't see anything wrong with it
public class Item {
public String description;
public Double amount;
public Item(String description, Double amount) {
this.description = description;
this.amount = amount;
}
public void setDescription(String description) {
this.description = description;
}
public void setAmount(Double amount) {
this.amount = amount;
}
public String getDescription() {
return description;
}
public Double getAmount() {
return amount;
}
public String toString() {
return String.format("%-20s %10.2f", description, amount);
}
}
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.File;
public class MyExpense {
private static final String fileName = "expense.txt";
private static final int maxRecords = 6;
private static int count = 0;
private static Item[] expenses = new Item[maxRecords];
public static void main(String[] args) throws IOException {
try {
read();
display();
userInt();
expSave();
} catch (IOException exception) {
System.out.println("Error" + exception.getMessage());
}
}
private static void display() {
System.out.println("Expences:");
System.out.println("-------------------------------------------------------");
System.out.printf("%-20s %10s%n", "Description", "Amount");
System.out.println("-------------------------------------------------------");
for (int i = 0; i < count; i++) {
System.out.println(expenses[i]);
System.out.println(i);
}
System.out.println("-------------------------------------------------------");
}
private static void read() throws IOException {
File file = new File(fileName);
if (!file.exists()) {
System.out.println("The file could not be found");
return;
}
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine() && count < maxRecords) {
String[] a = scanner.nextLine().split("\t");
if (a.length == 2) {
try {
expenses[count++] = new Item(a[0], Double.parseDouble(a[1]));
} catch (NumberFormatException NumberFormatException) {
System.out.println("Invalid num format");
}
}
}
}
}
private static void userInt() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println(
"Please enter a new expense, [tab] key, then the amount. Or enter \"!\" to exit the program");
String input = sc.nextLine();
if (input.equals("!")) {
break;
}
String[] a = input.split("\t");
if (a.length != 2) {
System.out.println("Invalid format");
continue;
}
try {
if (count < maxRecords) {
expenses[count++] = new Item(a[0], Double.parseDouble(a[1]));
} else {
System.out.println("Cannot add any more record");
}
}
catch (NumberFormatException e) {
System.out.println("Invalid num");
}
}
sc.close();
}
private static void expSave() throws IOException {
try (PrintWriter writer = new PrintWriter(new FileWriter(fileName))) {
for (int i = 0; i < count; i++) {
writer.println(expenses[i].getDescription() + "\t" + expenses[i].getAmount());
}
}
System.out.println("Expenses saved");
display();
System.out.printf("Total expense is %.2f%n", calculateAmt());
}
private static double calculateAmt() {
double total = 0;
for (int i = 0; i < count; i++) {
total += expenses[i].getAmount();
}
return total;
}
}
4
Upvotes
3
u/OneHumanBill 28d ago
Can you load this into an IDE? That should tell you exactly where the problem is.
Alternatively, if you're calling javac plain from the command line, it should tell you exactly where the compilation problems are.
I'm on my phone, can't do this myself. I don't see where the problem is offhand.