Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小型图书馆管理程序的问题_Java - Fatal编程技术网

Java 小型图书馆管理程序的问题

Java 小型图书馆管理程序的问题,java,Java,我很难把它拼在一起。我有基本的读写功能。我需要检查“Books.txt”文件的输入,以便: ISBN是有效的 CopyNumber、年份和统计信息应为数字 标题、作者和发布者必须包含值 借用日期必须是有效日期 ReturnDate(如果可用)必须是有效日期 LibraryCardNumber(如果可用)必须为数字 如果一本书没有被借,那么最后两个字段就不存在了 “Books.txt”中的2个示例行: 9780140455168#2#The Twelve Caesars#Suetonius#P

我很难把它拼在一起。我有基本的读写功能。我需要检查“Books.txt”文件的输入,以便:

  • ISBN是有效的
  • CopyNumber、年份和统计信息应为数字
  • 标题、作者和发布者必须包含值
  • 借用日期必须是有效日期
  • ReturnDate(如果可用)必须是有效日期
  • LibraryCardNumber(如果可用)必须为数字
如果一本书没有被借,那么最后两个字段就不存在了

“Books.txt”中的2个示例行:

9780140455168#2#The Twelve Caesars#Suetonius#Penguin Classics#2007#3#101009#101030#5478
9780141188607#1#Claudius the God#Robert Graves#Penguin Classics#2006#2#080123
错误行应写入带有错误消息的“ErrorLines.txt”,例如错误的ISBN。无错误的书籍应写入“NewBooks.txt”,并按作者姓名排序

这是我到目前为止得到的。我不是在寻找一个完整的解决方案,因为我显然还有很长的路要走,但如果有人能给我一些建议,我将非常感激!是的,这是家庭作业:D

我需要做一个try循环来验证输入吗

图书馆类:

import java.util.ArrayList;
import java.util.*;
import java.io.*;
import java.io.IOException;

public class Library {

public void readFromFile (String filename) throws IOException {

String inLine;
File inFile;

    inFile = new File("Books.txt");
    BufferedReader fIn = new BufferedReader(new FileReader(inFile));

        inLine = fIn.readLine();
        while (inLine != null) {
            inLine = fIn.readLine();
            aBookList.add(inLine + "\n");
        }
        fIn.close();
    }

public void writeToFile (String fileName) throws IOException {

    BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new FileWriter(fileName));

            bw.write("???"); //Dont know what to put here...
            bw.newLine();
        } catch (IOException e) {
            System.out.println("Error writing file.");
        } finally {
            bw.close();
        }
    }

 public static boolean isISBN13Valid(isbn) {
        int check = 0;
        for (int i = 0; i < 12; i += 2) {
            check += Integer.valueOf(isbn.substring(i, i + 1));
        }
        for (int i = 1; i < 12; i += 2) {
            check += Integer.valueOf(isbn.substring(i, i + 1)) * 3;
        }
        check += Integer.valueOf(isbn.substring(12));
        return check % 10 == 0;
    }
}
import java.util.ArrayList;
导入java.util.*;
导入java.io.*;
导入java.io.IOException;
公共班级图书馆{
public void readFromFile(字符串文件名)引发IOException{
字符串内联;
文件填充;
infle=新文件(“Books.txt”);
BufferedReader fIn=新的BufferedReader(新文件读取器(infle));
inLine=fIn.readLine();
while(内联!=null){
inLine=fIn.readLine();
aBookList.add(内联+“\n”);
}
fIn.close();
}
public void writeToFile(字符串文件名)引发IOException{
BufferedWriter bw=null;
试一试{
bw=新的缓冲写入程序(新的文件写入程序(文件名));
写(“???”)//不知道在这里放什么。。。
换行符();
}捕获(IOE异常){
System.out.println(“写入文件时出错”);
}最后{
bw.close();
}
}
公共静态布尔值ISISBN13有效(isbn){
整数检查=0;
对于(int i=0;i<12;i+=2){
check+=整数.valueOf(isbn.子字符串(i,i+1));
}
对于(int i=1;i<12;i+=2){
check+=整数.valueOf(isbn.子字符串(i,i+1))*3;
}
检查+=整数.valueOf(isbn.子字符串(12));
返回检查%10==0;
}
}
这是图书课:

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

public class Book {
Book b = new Book();
private static ArrayList<String> aBookList = new ArrayList<String>();

private String Isbn;
private int CopyNumber;
private String Title;
private String Author;
private String Publisher;
private int Year;
private int Statistics;
private String BorrowDate;
private String ReturnDate;
private int LibraryCardNumber;

public void bookInfo (String nIsbn, int nCopyNumber, String nTitle, String nAuthor, String nPublisher, int nYear,
        int nStatistics, String nBorrowDate, String nReturnDate, int nLibraryCardNumber) {

    Isbn = nIsbn; 
    CopyNumber = nCopyNumber; 
    Title = nTitle; 
    Author = nAuthor; 
    Publisher = nPublisher; 
    Year = nYear;
    Statistics = nStatistics; 
    BorrowDate = nBorrowDate; 
    ReturnDate = nReturnDate; 
    LibraryCardNumber = nLibraryCardNumber;
}

public void bookInfo (String Row) {
    StringTokenizer sT = new StringTokenizer(Row);
    Isbn = sT.nextToken("#");
    CopyNumber = Integer.parseInt(sT.nextToken("#") );
    Title = sT.nextToken("#");
    Author = sT.nextToken("#");
    Publisher = sT.nextToken("#");
    Year = Integer.parseInt(sT.nextToken("#") );
    Statistics = Integer.parseInt(sT.nextToken("#") );
    BorrowDate = sT.nextToken("#");
    ReturnDate = sT.nextToken("#");
    LibraryCardNumber = Integer.parseInt(sT.nextToken("#") );
}
public void setIsbn(String nIsbn) {
    Isbn = nIsbn;       
}
public void setCopynumber(int nCopyNumber) {
    CopyNumber = nCopyNumber;       
}
public void setTitle(String nTitle) {
    Title = nTitle;     
}
public void setAuthor(String nAuthor) {
    Author = nAuthor;       
}
public void setPublisher(String nPublisher) {
    Publisher = nPublisher;     
}
public void setYear(int nYear) {
    Year = nYear;       
}
public void setStatistics(int nStatistics) {
    Statistics = nStatistics;       
}
public void setBorrowDate(String nBorrowDate) {
    BorrowDate = nBorrowDate;       
}
public void setReturnDate(String nReturnDate) {
    ReturnDate = nReturnDate;
}
public void setLibraryCardNumber(int nLibraryCardNumber) {
    LibraryCardNumber = nLibraryCardNumber;
}

 public String getAll () {
    String s = " ";
    return (Isbn + s + CopyNumber + s + Title + s + Author + s + Publisher + s +
                   Year + s + Statistics + s + BorrowDate + s + ReturnDate + s +
                   LibraryCardNumber);
}
public void showAll () {
    String t = "\t";
    System.out.println(Isbn + t + CopyNumber + t + Title + t + Author + t +
                       Publisher + t + Year + t + Statistics + t + 
                       BorrowDate + t + ReturnDate + t + LibraryCardNumber);
}
}
import java.util.*;
导入java.io.*;
公共课堂用书{
书b=新书();
私有静态ArrayList aBookList=new ArrayList();
专用字符串Isbn;
私人int文号;
私有字符串标题;
私有字符串作者;
私有字符串发布器;
私人国际年;
私人统计;
私人字符串借用日期;
私有字符串返回日期;
私人国际图书馆卡号;
public void bookInfo(字符串nIsbn、整数nCopyNumber、字符串nTitle、字符串NAUTOR、字符串NPPublisher、整数nYear、,
int nStatistics,字符串nBorrowDate,字符串nReturnDate,int nLibraryCardNumber){
Isbn=nIsbn;
CopyNumber=nCopyNumber;
Title=nTitle;
作者=Nautor;
Publisher=nppublisher;
年=年;
统计学=统计学;
借入日期=nBorrowDate;
ReturnDate=nReturnDate;
LibraryCardNumber=nLibraryCardNumber;
}
公共作废bookInfo(字符串行){
StringTokenizer sT=新的StringTokenizer(行);
Isbn=sT.nextToken(“#”);
CopyNumber=Integer.parseInt(sT.nextToken(“#”);
Title=sT.nextToken(“#”);
作者=sT.nextToken(“#”);
Publisher=sT.nextToken(“#”);
年份=整数.parseInt(sT.nextToken(“#”);
Statistics=Integer.parseInt(sT.nextToken(“#”);
借款日期=sT.nextToken(“#”);
ReturnDate=sT.nextToken(“#”);
LibraryCardNumber=Integer.parseInt(sT.nextToken(“#”);
}
公共无效集合ISBN(字符串nIsbn){
Isbn=nIsbn;
}
公共无效setCopynumber(int nCopyNumber){
CopyNumber=nCopyNumber;
}
公共无效集合标题(字符串nTitle){
Title=nTitle;
}
public void setAuthor(字符串nautor){
作者=Nautor;
}
public void setPublisher(字符串nppublisher){
Publisher=nppublisher;
}
公共空间设置年(国际年){
年=年;
}
公共统计(国际统计){
统计学=统计学;
}
公共无效setBorrowDate(字符串nBorrowDate){
借入日期=nBorrowDate;
}
public void setReturnDate(字符串nReturnDate){
ReturnDate=nReturnDate;
}
公共无效设置库卡号(int nLibraryCardNumber){
LibraryCardNumber=nLibraryCardNumber;
}
公共字符串getAll(){
字符串s=“”;
返回(Isbn+s+CopyNumber+s+标题+s+作者+s+出版商+s+
年份+s+统计+s+借用日期+s+归还日期+s+
图书馆卡号);
}
公共空间显示全部(){
字符串t=“\t”;
System.out.println(Isbn+t+文号+t+标题+t+作者+t+
出版商+t+年份+t+统计+t+
借阅日期+t+归还日期+t+图书馆卡号);
}
}
最后是Main类和Main方法:

public class Main<aBookList> implements Comparable<aBookList> {
public static void main(String [] args) throws Exception {

    new Library().readFromFile("Books.txt");

    new Library().writeToFile("NewBooks.txt");
    new Library().writeToFile("ErrorLines.txt");

}

@Override
public int compareTo(aBookList o) {
    return 0;
}
}
public类主要实现{
公共静态void main(字符串[]args)引发异常{
new Library().readFromFile(“Books.txt”);
new Library().writeToFile(“NewBooks.txt”);
新建库().writeToFile(“ErrorLines.txt”);
}
@凌驾
公共国际比较组织(ABOOKO){
返回0;
}
}

因为这是家庭作业,我会给你指方向,而不是给你代码

1) 你这儿乱七八糟(我不知道你为什么在主课上做比较)?只需重写toString方法,而不是在bookInfo中创建getAll方法(根据java命名约定命名)

2) 为什么有字符串列表?阅读一行,将其转换为书籍,如果书籍有效,则将其添加到列表中,否则报告错误

3) 移动你的