gpt4 book ai didi

java - 记事本无法识别使用 PrintStream 输出到文本文件的 Java 代码中的换行符

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:59 26 4
gpt4 key购买 nike

我的学校 Java 项目需要一些帮助。请参阅下面的 Book 和 BookApplication 类代码,以及输入文本文件和所需的输出文本文件。

输出文件有问题。当我在 Word 或 WordPad 或 NotePad++ 中打开它时,文件格式正确。但是当我在记事本中打开文件时,报告全部在一行中。

出于某种原因,NotePad 无法识别新行字符。对此有什么想法吗?如何更改 Java 代码以便记事本正确显示报告?我是 Java 菜鸟,我在这门 Java 类(class)中真的很吃力。非常感谢您能提供的任何帮助。谢谢。

名为inBook.txt的输入文本文件内容如下:

Java 简介0123444555680托尼·加迪斯TG003Javascript 简介9780071632969约翰·波洛克JP402游戏开发基础9780763778希瑟麦克斯韦钱德勒HC026

名为 outBook.txt 的输出文本文件需要完全如下读取:

Dean Publishers - 图书 list

Java 简介托尼·加迪斯 (TG003)书号:0123444555680

Javascript 简介约翰·波洛克 (JP402)书号:9780071632969

游戏开发基础希瑟·麦克斯韦·钱德勒 (HC026)书号:9780763778

我们当前的目录有 3 本书。

感谢您的关注。

//Book.java

public class Book {

public static final String BOOK_PUBLISHER = "Dean Publishers";

private String bookTitle;
private String bookISBN;
private Author bookAuthor;

Book(String inTitle) {
setBookTitle(inTitle);
setBookISBN("0");
setBookAuthor("");
}

public void setBookTitle(String inTitle) {
bookTitle = inTitle;
}

public void setBookISBN(String inISBN) {
bookISBN = inISBN;
}

public void setBookAuthor(String inName) {
bookAuthor = new Author(inName);
}

public void setBookAuthorID(String inID) {
bookAuthor.setAuthorID(inID);
}

public String getBookTitle() {
return bookTitle;
}

public String getBookISBN() {
return bookISBN;
}

public Author getAuthor() {
return bookAuthor;
}

public String getAuthorName() {
return bookAuthor.getAuthorName();
}

public String getAuthorID() {
return bookAuthor.getAuthorID();
}

//inner class
class Author {
private String authorName; //instance property
private String authorID; //instance property

//constructor
Author(String inName) {
setAuthorName(inName);
setAuthorID("0");
}

public void setAuthorName(String inName) {
authorName = inName;
}

public void setAuthorID(String inID) {
authorID = inID;
}

public String getAuthorName() {
return authorName;
}

public String getAuthorID() {
return authorID;
}
} //end inner Author class

} //end Book class

BookApplication.java

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

public class BookApplication {

public static void main(String[] args) throws IOException {
// Create Book object for each book in the file and store them in array.
Scanner filein = new Scanner(new File("inBook.txt"));

// I will use ArrayList, a dynamic-size array
ArrayList<Book> books = new ArrayList<Book>();

while(filein.hasNextLine()) {
// read book data
String title = filein.nextLine();
String isbn = filein.nextLine();
String author = filein.nextLine();
String authorID = filein.nextLine();

// create new book from input
Book temp = new Book(title);
temp.setBookISBN(isbn);
temp.setBookAuthor(author);
temp.getAuthor().setAuthorID(authorID);

// add to arraylist
books.add(temp);
}

// Create an output report by reading the Book objects from the array.
String output = "";
for(Book book : books) {
output += book.getBookTitle() + "\n";
output += "By "+book.getAuthor().getAuthorName() + " (" + book.getAuthor().getAuthorID() + ")\n";
output += "ISBN: " + book.getBookISBN() + "\n\n";
}

// Report prints to console
System.out.println(output);

// Report prints to file called outBook.txt
PrintStream fileout = new PrintStream(new File("outBook.txt"));
fileout.println(output);
fileout.close();

// Count the number of books outputted to the report.
System.out.println("Our current catalog has " + books.size() + " books.");
System.out.println("\nThank you for your interest.");

} // end main method
} // end BookApplication

最佳答案

您正在为新行使用 \n 字符,这对于 *nix 是正确的。在 Windows 中是 \r\n。如果你不想担心你在哪个平台上,你可以使用:

System.getProperty("line.separator")

获得那个 token 。这样您的程序就可以在任何平台上运行。

更新:看起来在 Java 7 中你可以只使用 System.lineSeparator() .

关于java - 记事本无法识别使用 PrintStream 输出到文本文件的 Java 代码中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5557978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com