【问题标题】:Cannot save data to .txt (Java OOP console application)无法将数据保存到 .txt(Java OOP 控制台应用程序)
【发布时间】:2017-04-30 09:17:34
【问题描述】:

所以基本上我是在 NetBeans IDE 上使用 Java 开发简单的库管理系统控制台应用程序。我想将书籍数据保存到 .txt,但似乎我在这里犯了一些逻辑错误之类的。我是新手,请帮忙。

所以我创建了一个名为“Book”的课程



import java.io.*;
import java.util.Scanner;

public class Book {

        Scanner sc = new Scanner(System.in);
        public int bookId;
        public String bookTitle, author,Description, alley;

        public Book(){}
        public Book(int bookid, String booktitle, String Author, String desc, String Alley)
        {
            bookId = bookid;bookTitle=booktitle;author=Author;Description=desc;alley=Alley;
        }
        public int getbookID()
        {return bookId;}
        public String getBookTitle()
        {return bookTitle;}
        public String getAuthor()
        {return author;}
        public String getDescription()
        {return Description;}
        public String getAlley()
        {return alley;}

        public void setbookID(int bid)
        {bookId = bid;}
        public void setbookTitle(String bt)
        {bookTitle = bt;}
        public void setbookAuthor(String a)
        {author = a;}
        public void setDescription(String Desc)
        {Description = Desc;}
        public void setAlley(String alleY)
        {alley = alleY;}

        public String ToString()
        {
            return bookId + " " + bookTitle + " " + author + " " + Description + " " + alley;
        }

        public void WriteToTxt()
        {
            try
            {
                File f = new File("book.txt");
                FileWriter fw = new FileWriter(f, true); //set to True to append more
                PrintWriter pw = new PrintWriter(fw);
                pw.write(this.toString());
                pw.write("/n");
                pw.flush();
                pw.close();
            }
            catch(IOException ex)
            {
                System.out.println(ex);
            }
        }
}

我创建了一个具有添加书籍方法的类管理员



public void addNewBook()
    {
         int bid;
         String bookTitle, Author, Description, alley;
         Scanner scan = new Scanner(System.in);
        System.out.println("Enter Book ID: ");
        bid = sc.nextInt();
        System.out.println("Enter Book Title: ");
        bookTitle = sc.next();
        System.out.println("Enter Book Author: ");
        Author = sc.next();
        System.out.println("Enter Book Description: ");
        Description = sc.next();
        System.out.println("Enter Book Alley: ");
        alley = scan.next();

        Book b = new Book(bid, bookTitle, Author, Description, alley);
        b.WriteToTxt();

    } 

它成功创建了 txt 文件,但内容不是预期的。

lmsconsole.Book@7d4991ad/n

我做错了什么?提前致谢。

【问题讨论】:

    标签: java oop netbeans console-application


    【解决方案1】:

    以下是我注意到的:

    public String ToString()
    

    你想要完成的,通过这个方法是不能实现的,应该是toString

    您还必须关注@Paulos 的回答

    【讨论】:

      【解决方案2】:

      你已经为 ToString() 而不是 toString() 编写了定义

      你使用了 /n 而不是 \n

      纠正上述错误应该可以解决问题。

      【讨论】:

        【解决方案3】:

        您的 ToString 方法中有一个愚蠢的错字。正确的名称是toString(方法总是在Java中以小写字母开头)。

        要编写一个新行,您可以使用println() 或简单地编写"\n" 字符(注意转义字符使用反斜杠)。

        最后,始终添加一个@Override 注释(在方法上方),以确保从现在开始覆盖正确的方法。


        顺便说一句,作为编码风格,你也可以考虑在构造函数中分配Book字段时使用this:

        this.bookId = bookId;
        this.bookTitle = bookTitle;
        ...
        

        这将在您的构造函数中启用更安全的代码和更好的参数名称,从而提高代码的可读性。

        【讨论】:

        • 已排序。谢谢兄弟!
        • @Irfan 欢迎您!如果我的回答满足您的需求,请务必将其标记为已接受的答案,以使未来的编码人员也受益。谢谢大佬!
        猜你喜欢
        • 2017-04-09
        • 2018-05-13
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        相关资源
        最近更新 更多