Seltsames Problem beim Schreiben einer Datei in Java

Nov 03 2020

Wenn mein Programm zu starten dauert es 3 Argumente genannt input.txt, data.txtund output.txt. Es speichert die Informationen der Songs in der data.txtzu der LinkedListund führen Operationen durch die Befehle der Verarbeitung in dem input.txt. Einige Befehle in input.txt(z. B. Liste) drucken Informationen in die output.txtDatei.

Inhalt von input.txt:

Add id:12 name:"Sandik" singer:"Muslum Gurses" year:2009 count:5 price:20
Add id:15 singer:"Tarkan" name:"Adimi Kalbine Yaz" year:2010 count:10 price:20
Add id:20 name:"Fear of the Dark" singer:"Iron Maiden" year:1992 count:20 price:15
Add id:25 name:"Dark Side of the moon" singer:"Almora" year:1987 count:5 price:10
Remove id:12
List
Edit id:15 singer:"Tarkan Tevetoglu"
Search "ark"
Sell 20
List
Quit

Inhalt von data.txt:

<id>; <price>; <name>; <singer>; <year>; <count>

15;20;Adimi Kalbine Yaz; Tarkan Tevetoglu;2010;10
12;20;Sandik;Muslum Gurses;2009;5
20;15;Fear of the Dark;Iron Maiden;1992;20

Erwartete output.txt:

New CD added id: 12 name:"Sandik"
New CD added id: 15 name:"Adimi Kalbine Yaz"
New CD added id: 20 name:"Fear of the Dark"
New CD added id: 25 name:"Dark Side of the moon"
CD removed id: 12


List (12 is removed)
Id   Price                     Name         Singer      Year      Count
-----------------------------------------------------------------------
15      20        Adimi Kalbine Yaz         Tarkan      2010         10
25      10    Dark Side of the moon         Almora      1984          5
20      20         Fear of the Dark    Iron Maiden      1992         20


Edit CD id: 15
Id   Price                     Name              Singer      Year      Count
----------------------------------------------------------------------------
15      20        Adimi Kalbine Yaz    Tarkan Tevetoglu      2010         10


Id   Price                     Name         Singer      Year      Count
-----------------------------------------------------------------------
15      20        Adimi Kalbine Yaz         Tarkan      2010         10
25      10    Dark Side of the moon         Almora      1984          5
20      20         Fear of the Dark    Iron Maiden      1992         20


Search "ark”
Id   Price                     Name         Singer      Year      Count
-----------------------------------------------------------------------
25      10    Dark Side of the moon         Almora      1984          5
20      20         Fear of the Dark    Iron Maiden      1992         20


CD sold id: 20
Id   Price                     Name         Singer      Year      Count
-----------------------------------------------------------------------
15      20        Adimi Kalbine Yaz         Tarkan      2010         10
25      10    Dark Side of the moon         Almora      1984          5
20      20         Fear of the Dark    Iron Maiden      1992         20


Quit
Cash: 20
Best Seller: Fear of the Dark

Mein Programm besteht aus 2 Klassen Mainund LinkedList. Ich habe dieses Programm geschrieben und alles ist in Ordnung. Während das Programm entwickelt wurde, machte ich meine Experimente auf der Konsole. Ich habe das Programm beendet und während ich die Druckteile so geändert habe, dass sie in die Datei anstatt in die Konsole gedruckt werden, ist mein Programm explodiert. Bevor ich den Teil erkläre, der das Problem verursacht, möchte ich meinen Code freigeben.

Hauptklasse :

import java.io.*;
import java.util.Scanner; // Import the Scanner class to read text files


public class Main {
    public static void main(String[] args) throws IOException {
        int i = 0;
        /* Start with the empty list. */
        LinkedList list = new LinkedList(args);
        int id1 = 0,year1 = 0,count1 = 0,price1 = 0;
        String name1 = "",singer1 = "";

        //The contents of data.txt have been loaded into the program.
        try {
            Scanner scan = new Scanner(new File(args[1]));
            while (scan.hasNextLine()) {

                String data = scan.nextLine();
                String[] readedData = data.split(";");
                LinkedList.insert(list,id1 = Integer.parseInt(readedData[0]),price1 = Integer.parseInt(readedData[1]),name1 = readedData[2],singer1 = readedData[3],year1 = Integer.parseInt(readedData[4]),count1 = Integer.parseInt(readedData[5]));
            }
            scan.close();
        } catch (FileNotFoundException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }

        //The object required to write to the file has been created.
        //FileWriter myWriter = new FileWriter(args[2]);
        PrintStream output1 = new PrintStream(args[2]);

        //The input.txt file has started to be read.
        try {
            Scanner scan = new Scanner(new File(args[0]));
            while (scan.hasNextLine()) {
                String data = scan.nextLine();

                // First, split on whitespace
                //String[] parts = data.split("(?<!\"\\w\")\\s+(?!\\w+\")"); //Alternate Solution

                String[] parts = data.split("\\s(?=\\w+:)");
                String[] parts1 = data.split("(?<!\"\\w\")\\s+(?!\\w+\")");
                String command1 = parts1[0];

                // The first element in the array is the command
                String command = parts[0];
                // Split the remaining elements on ':'
                String[] keyVal;
                String key = " ";
                String value= " ";
                for (i = 1; i < parts.length; i++) {
                    keyVal = parts[i].split(":");
                    if (keyVal.length == 2) {
                        key = keyVal[0];
                        value = keyVal[1];
                        switch (key) {
                            case "id" -> id1 = Integer.parseInt(value);
                            case "name" -> name1 = value.substring(1, value.length() - 1);
                            case "singer" -> singer1 = value.substring(1, value.length() - 1);
                            case "year" -> year1 = Integer.parseInt(value);
                            case "count" -> count1 = Integer.parseInt(value);
                            case "price" -> price1 = Integer.parseInt(value);
                        }
                    }
                }
                switch (command1) {
                    case "Add" -> {
                        LinkedList.insert(list, id1, price1, name1, singer1, year1, count1);                //DONE!
                        output1.print("New CD added id: "+id1+" name: "+name1);
                        output1.println();
                    }
                    case "Search" -> {
                        output1.print("List:\n");
                        String[] key1 = command.split(" ");
                        String SearchKey = key1[1];
                        SearchKey = SearchKey.substring(1, SearchKey.length() - 1);
                        LinkedList.searchAndFind(list,SearchKey);
                        output1.println();
                    }
                    case "Remove" -> {
                        LinkedList.deleteNode(list,LinkedList.searchPosition(list,id1));                  //DONE!
                        output1.print("CD removed id: "+id1);
                        output1.println();
                    }
                    case "List" -> {
                        output1.print("List:\n");
                        LinkedList.printList(list);
                        output1.println();
                    }
                    case "Edit" -> {
                        output1.print("Edit CD id: "+id1);
                        output1.println();
                        switch (key) {
                            case "singer" -> LinkedList.editSinger(list, id1, singer1);
                            case "name" -> LinkedList.editName(list, id1, name1);
                            case "year" -> LinkedList.editYear(list, id1, year1);                         //DONE!
                            case "count" -> LinkedList.editCount(list, id1, count1);
                            case "price" -> LinkedList.editPrice(list, id1, price1);
                        }
                        output1.println();
                    }
                    case ("Sell") -> {
                        LinkedList.sell(list,id1);
                        output1.print("CD Sold. ID: "+id1);                                                //DONE!
                        output1.println();
                    }
                    case "Quit" -> {
                        output1.print("Quit");
                        output1.println();
                        output1.print("Cash :"+LinkedList.cash);
                        output1.println();
                    }
                }
            }
            scan.close();
        } catch (FileNotFoundException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
        output1.close();
    }
}

LinkedList-Klasse:

import java.io.IOException;
import java.io.PrintStream;

public class LinkedList {

    Node head; // head of list

    public String[] args;

    static PrintStream output = null;
    public LinkedList(String[] args) throws IOException {
        this.args = args;
        output = new PrintStream(args[2]);
    }

    static class Node {

        int id;
        int year;
        int count;
        int price;
        String name;
        String singer;

        Node next;

        // Constructor
        Node(int i, int p, String n, String s, int y, int c) {
            id = i;
            year = y;
            count = c;
            price = p;
            name = n;
            singer = s;

            next = null;
        }
    }

    public static LinkedList insert(LinkedList list, int i,int p, String n, String s, int y,int c)
    {
        // Create a new node with given data
        Node new_node = new Node(i,p,n,s,y,c);
        new_node.next = null;

        // If the Linked List is empty,
        // then make the new node as head
        if (list.head == null) {
            list.head = new_node;
        }
        else {
            // Else traverse till the last node
            // and insert the new_node there
            Node last = list.head;
            while (last.next != null) {
                last = last.next;
            }

            // Insert the new_node at last node
            last.next = new_node;
        }

        // Return the list by head
        return list;
    }

    public static void printList(LinkedList list)
    {
        Node currNode = list.head;

        output.printf("%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
        output.println("\n-------------------------------------------------------------------------------------------------");
        // Traverse through the LinkedList
        while (currNode != null) {
            // Print the data at current node
            output.printf("%s %10s %30s %25s %15s %10s", currNode.id, currNode.price, currNode.name, currNode.singer, currNode.year, currNode.count);

            // Go to next node
            currNode = currNode.next;
            output.println();
        }
        output.println();
    }

    public static void deleteNode(LinkedList list ,int position)
    {
        // If linked list is empty
        if (list.head == null)
            return;

        // Store head node
        Node temp = list.head;

        // If head needs to be removed
        if (position == 0)
        {
            list.head = temp.next;   // Change head
            return;
        }

        // Find previous node of the node to be deleted
        for (int i=0; temp!=null && i<position-1; i++)
            temp = temp.next;

        // If position is more than number of nodes
        if (temp == null || temp.next == null)
            return;

        // Node temp->next is the node to be deleted
        // Store pointer to the next of node to be deleted
        Node next = temp.next.next;

        temp.next = next;  // Unlink the deleted node from list
    }

    static int search = 0;
    static int cash = 0;
    public static int searchPosition(LinkedList list, int x)
    {
        search = 0;
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                break;
            }
            current = current.next;
            search++;
        }
        return search;
    }

    public static int sell(LinkedList list, int x)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                cash = cash + current.price;
                break;
            }
            current = current.next;
        }
        return cash;
    }

    public static void editName(LinkedList list, int x, String a)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.name = a;
                output.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                output.println("\n-------------------------------------------------------------------------------------------------");
                output.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }

    }
    public static void editSinger(LinkedList list, int x, String a)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.singer = a;
                output.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                output.println("\n-------------------------------------------------------------------------------------------------");
                output.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void editYear(LinkedList list, int x, int a)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.year = a;
                output.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                output.println("\n-------------------------------------------------------------------------------------------------");
                output.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void editCount(LinkedList list, int x, int a)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.count = a;
                output.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                output.println("\n-------------------------------------------------------------------------------------------------");
                output.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void editPrice(LinkedList list, int x, int a)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.price = a;
                output.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                output.println("\n-------------------------------------------------------------------------------------------------");
                output.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void searchAndFind(LinkedList list, String a)
    {
        Node current = list.head;    //Initialize current
        output.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
        output.println("\n-------------------------------------------------------------------------------------------------");
        while (current != null)
        {
            if (current.name.contains(a)){
                output.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                output.println();
            }
            current = current.next;
        }
    }
}

Als ich das Programm ausführte, war die in die Datei output.txt gedruckte Ausgabe falsch und ich habe sie debuggt. Als mein Programm zur Switch-Struktur kam, wurde der erste Befehl, add, gelesen und die Operation ausgeführt, alles war in Ordnung. Bis der ListBefehl gelesen wird. Alle Befehle vor dem ListBefehl funktionierten einwandfrei und alles war in Ordnung, aber beim ListLesen printListfunktionierte die Funktion aus der LinkedListKlasse. Sobald diese Zeile ausgeführt wird, wird meine output.txtDatei beschädigt.output.printf ("% s% 10s% 30s% 25s% 15s% 10s", "ID", "Price", "Name", "Singer", "Year", "Count");

Und jedes Mal, wenn der output.printBefehl in der LinkedListKlasse ausgeführt wurde, wurde meine output.txtDatei weiter beschädigt. Ich denke, das Problem kann durch zwei separate Objekte verursacht werden, die in dieselbe Datei schreiben. Ich bin nicht sicher, aber sie können widersprüchlich sein. Wie kann ich dieses Problem lösen oder gibt es einen praktischeren Weg? Ich wäre Ihnen dankbar, wenn Sie mir helfen könnten. Danke im Voraus.

Antworten

Roxox Nov 03 2020 at 03:25

Ich habe das Problem beispielsweise gelöst, indem ich das in Main erstellte Objekt mit dem Namen output1 an die Funktion gesendet habe, die beim Lesen des Befehls add aufgerufen wird, und es in der LinkedList-Klasse verwendet habe.

LinkedList-Klasse:

import java.io.*;

public class LinkedList {
    Node head; // head of list

    public String[] args;

    public LinkedList(String[] args){
        this.args = args;
    }

    static class Node {

        int id;
        int year;
        int count;
        int price;
        String name;
        String singer;

        Node next;

        // Constructor
        Node(int i, int p, String n, String s, int y, int c) {
            id = i;
            year = y;
            count = c;
            price = p;
            name = n;
            singer = s;

            next = null;
        }
    }

    public static LinkedList insert(LinkedList list, int i,int p, String n, String s, int y,int c)
    {
        // Create a new node with given data
        Node new_node = new Node(i,p,n,s,y,c);
        new_node.next = null;

        // If the Linked List is empty,
        // then make the new node as head
        if (list.head == null) {
            list.head = new_node;
        }
        else {
            // Else traverse till the last node
            // and insert the new_node there
            Node last = list.head;
            while (last.next != null) {
                last = last.next;
            }

            // Insert the new_node at last node
            last.next = new_node;
        }

        // Return the list by head
        return list;
    }

    public static void printList(LinkedList list, PrintStream x)
    {
        Node currNode = list.head;

        x.printf("%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
        x.println("\n-------------------------------------------------------------------------------------------------");
        // Traverse through the LinkedList
        while (currNode != null) {
            // Print the data at current node
            x.printf("%s %10s %30s %25s %15s %10s", currNode.id, currNode.price, currNode.name, currNode.singer, currNode.year, currNode.count);

            // Go to next node
            currNode = currNode.next;
            x.println();
        }
        x.println();
    }

    public static void deleteNode(LinkedList list ,int position)
    {
        // If linked list is empty
        if (list.head == null)
            return;

        // Store head node
        Node temp = list.head;

        // If head needs to be removed
        if (position == 0)
        {
            list.head = temp.next;   // Change head
            return;
        }

        // Find previous node of the node to be deleted
        for (int i=0; temp!=null && i<position-1; i++)
            temp = temp.next;

        // If position is more than number of nodes
        if (temp == null || temp.next == null)
            return;

        // Node temp->next is the node to be deleted
        // Store pointer to the next of node to be deleted
        Node next = temp.next.next;

        temp.next = next;  // Unlink the deleted node from list
    }

    static int search = 0;
    static int cash = 0;
    public static int searchPosition(LinkedList list, int x)
    {
        search = 0;
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                break;
            }
            current = current.next;
            search++;
        }
        return search;
    }

    public static int sell(LinkedList list, int x)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                cash = cash + current.price;
                break;
            }
            current = current.next;
        }
        return cash;
    }

    public static void editName(LinkedList list, int x, String a, PrintStream y)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.name = a;
                y.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                y.println("\n-------------------------------------------------------------------------------------------------");
                y.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }

    }
    public static void editSinger(LinkedList list, int x, String a, PrintStream y)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.singer = a;
                y.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                y.println("\n-------------------------------------------------------------------------------------------------");
                y.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void editYear(LinkedList list, int x, int a, PrintStream y)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.year = a;
                y.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                y.println("\n-------------------------------------------------------------------------------------------------");
                y.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void editCount(LinkedList list, int x, int a, PrintStream y)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.count = a;
                y.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                y.println("\n-------------------------------------------------------------------------------------------------");
                y.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void editPrice(LinkedList list, int x, int a, PrintStream y)
    {
        Node current = list.head;    //Initialize current
        while (current != null)
        {
            if (current.id == x){
                current.price = a;
                y.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
                y.println("\n-------------------------------------------------------------------------------------------------");
                y.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                break;
            }
            current = current.next;
        }
    }
    public static void searchAndFind(LinkedList list, String a, PrintStream y)
    {
        Node current = list.head;    //Initialize current
        y.printf("\n\n%s %10s %30s %25s %15s %10s", "ID", "Price", "Name", "Singer", "Year", "Count");
        y.println("\n-------------------------------------------------------------------------------------------------");
        while (current != null)
        {
            if (current.name.contains(a)){
                y.printf("%s %10s %30s %25s %15s %10s", current.id, current.price, current.name, current.singer, current.year, current.count);
                y.println();
            }
            current = current.next;
        }
    }
}

Hauptklasse:

import java.io.*;
import java.util.Scanner; // Import the Scanner class to read text files


public class Main {
    public static void main(String[] args) throws IOException {
        int i = 0;
        /* Start with the empty list. */
        LinkedList list = new LinkedList(args);
        int id1 = 0,year1 = 0,count1 = 0,price1 = 0;
        String name1 = "",singer1 = "";

        //The contents of data.txt have been loaded into the program.
        try {
            Scanner scan = new Scanner(new File(args[1]));
            while (scan.hasNextLine()) {

                String data = scan.nextLine();
                String[] readedData = data.split(";");
                LinkedList.insert(list,id1 = Integer.parseInt(readedData[0]),price1 = Integer.parseInt(readedData[1]),name1 = readedData[2],singer1 = readedData[3],year1 = Integer.parseInt(readedData[4]),count1 = Integer.parseInt(readedData[5]));
            }
            scan.close();
        } catch (FileNotFoundException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }

        //The object required to write to the file has been created.
        //FileWriter myWriter = new FileWriter(args[2]);
        PrintStream output1 = new PrintStream(args[2]);

        //The input.txt file has started to be read.
        try {
            Scanner scan = new Scanner(new File(args[0]));
            while (scan.hasNextLine()) {
                String data = scan.nextLine();

                // First, split on whitespace
                //String[] parts = data.split("(?<!\"\\w\")\\s+(?!\\w+\")"); //Alternate Solution

                String[] parts = data.split("\\s(?=\\w+:)");
                String[] parts1 = data.split("(?<!\"\\w\")\\s+(?!\\w+\")");
                String command1 = parts1[0];

                // The first element in the array is the command
                String command = parts[0];
                // Split the remaining elements on ':'
                String[] keyVal;
                String key = " ";
                String value= " ";
                for (i = 1; i < parts.length; i++) {
                    keyVal = parts[i].split(":");
                    if (keyVal.length == 2) {
                        key = keyVal[0];
                        value = keyVal[1];
                        switch (key) {
                            case "id" -> id1 = Integer.parseInt(value);
                            case "name" -> name1 = value.substring(1, value.length() - 1);
                            case "singer" -> singer1 = value.substring(1, value.length() - 1);
                            case "year" -> year1 = Integer.parseInt(value);
                            case "count" -> count1 = Integer.parseInt(value);
                            case "price" -> price1 = Integer.parseInt(value);
                        }
                    }
                }
                switch (command1) {
                    case "Add" -> {
                        LinkedList.insert(list, id1, price1, name1, singer1, year1, count1);                //DONE!
                        output1.print("New CD added id: "+id1+" name: "+name1);
                        output1.println();
                    }
                    case "Search" -> {
                        output1.print("List:\n");
                        String[] key1 = command.split(" ");
                        String SearchKey = key1[1];
                        SearchKey = SearchKey.substring(1, SearchKey.length() - 1);
                        LinkedList.searchAndFind(list,SearchKey,output1);
                        output1.println();
                    }
                    case "Remove" -> {
                        LinkedList.deleteNode(list,LinkedList.searchPosition(list,id1));                  //DONE!
                        output1.print("CD removed id: "+id1);
                        output1.println();
                    }
                    case "List" -> {
                        output1.print("List:\n");
                        LinkedList.printList(list,output1);
                        output1.println();
                    }
                    case "Edit" -> {
                        output1.print("Edit CD id: "+id1);
                        output1.println();
                        switch (key) {
                            case "singer" -> LinkedList.editSinger(list, id1, singer1,output1);
                            case "name" -> LinkedList.editName(list, id1, name1,output1);
                            case "year" -> LinkedList.editYear(list, id1, year1,output1);                         //DONE!
                            case "count" -> LinkedList.editCount(list, id1, count1,output1);
                            case "price" -> LinkedList.editPrice(list, id1, price1,output1);
                        }
                        output1.println();
                    }
                    case ("Sell") -> {
                        LinkedList.sell(list,id1);
                        output1.print("CD Sold. ID: "+id1);                                                //DONE!
                        output1.println();
                    }
                    case "Quit" -> {
                        output1.print("Quit");
                        output1.println();
                        output1.print("Cash :"+LinkedList.cash);
                        output1.println();
                    }
                }
            }
            scan.close();
        } catch (FileNotFoundException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
        output1.close();
    }
}