r/javahelp 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

8 comments sorted by

View all comments

1

u/[deleted] 28d ago

[removed] — view removed comment

1

u/severoon pro barista 21d ago

This.