关于用Java编写文件的怪异问题 [英] Weird problem about writing a file in Java

查看:86
本文介绍了关于用Java编写文件的怪异问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

启动程序时,它将使用3个名为input.txtdata.txtoutput.txt的参数.它将data.txt中的歌曲信息保存到LinkedList,并通过处理input.txt中的命令来执行操作. input.txt中的某些命令(例如,列表)将信息打印到output.txt文件中.

When starting my program it takes 3 arguments named input.txt, data.txt and output.txt. It saves the information of the songs in the data.txt to the LinkedList and performs operations by processing the commands in the input.txt. Some commands in input.txt (eg List) print information to the output.txt file.

input.txt的内容:

Content of 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

data.txt的内容:

Content of 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

预期的output.txt:

Expected 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

我的程序包含2个类,分别为MainLinkedList.我写了这个程序,一切正常.但是,在开发程序时,我正在控制台上进行实验.我完成了程序,并且在更改打印部分以打印到文件而不是控制台时,我的程序爆炸了.在解释导致问题的部分之前,我想分享我的代码.

My program consists of 2 classes, Main and LinkedList. I wrote this program and everything is ok. However, while the program was being developed, I was doing my experiments on the console. I finished the program and while I was changing the print parts to print to the file instead of the console, my program exploded. Before I explain the part that causes the problem, I want to share my code.

主类:

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类别:

LinkedList Class:

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;
        }
    }
}

当我运行程序时,打印到output.txt文件的输出不正确,因此我对其进行了调试.当我的程序进入切换结构时,读取了第一个命令add,并执行了操作,一切都很好.直到读取List命令. List命令之前的所有命令都可以正常工作,并且一切都很好,但是当读取List时,LinkedList类中的printList函数可以正常工作.一旦运行此行,我的output.txt文件就会损坏. output.printf ("% s% 10s% 30s% 25s% 15s% 10s", "ID", "Price", "Name", "Singer", "Year", "Count");

When I ran the program, the output printed to the output.txt file was incorrect and I debugged it. When my program came to the switch structure, the first command, add, was read and the operation was performed, everything was fine. Until the List command is read. All commands before the List command worked fine and everything was fine, but when List was read, the printList function from the LinkedList class worked. As soon as this line runs, my output.txt file gets corrupted. output.printf ("% s% 10s% 30s% 25s% 15s% 10s", "ID", "Price", "Name", "Singer", "Year", "Count");

并且每次运行LinkedList类中的output.print命令时,我的output.txt文件都会进一步损坏.我认为问题可能是由2个单独的对象写在同一文件中引起的.我不确定,但是它们可能会发生冲突.我该如何解决这个问题或有更实际的方法?如果您能提供帮助,我将不胜感激.预先感谢.

And every time the output.print command in the LinkedList class ran, my output.txt file was further corrupted. I think the problem may be caused by 2 separate objects writing on the same file. I'm not sure, but they may be conflicting. How can I solve this problem or is there a more practical way? I would be grateful if you could help. Thanks in advance.

推荐答案

例如,我通过将在Main中创建的名为output1的对象发送给在读取和使用add命令时将要调用的函数来解决该问题.在LinkedList类中.

For example, I solved the problem by sending the object named output1 that I created in Main to the function that will be called when the add command is read and using it in the LinkedList class.

LinkedList类别:

LinkedList Class:

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;
        }
    }
}

主类:

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();
    }
}

这篇关于关于用Java编写文件的怪异问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆