Java 代码中的ArrayList问题,有什么建议吗?

Java 代码中的ArrayList问题,有什么建议吗?,java,Java,我在将ISBN号改为书名时遇到问题 开始打印ISBN、作者、书名和剩余图书级别: 0201403765 Jan Skansholm Ada 95 from the Beginning 100 0202535665 M. Ben-Ari Software Engineering 25 034565976X Michael Feldman Program Construction 12 080539057X M.A. Wei

我在将ISBN号改为书名时遇到问题

开始打印ISBN、作者、书名和剩余图书级别:

0201403765 Jan Skansholm    Ada 95 from the Beginning   100
0202535665 M. Ben-Ari           Software Engineering            25
034565976X Michael Feldman  Program Construction            12
080539057X M.A. Weiss           Data Structures             30
0805645782 Ken Arnold           Java for Programmers            10
0905297568 A. Badone            Chaos Theory                    15
打印出
transactions.txt中的内容:

0201403765     -55
0201403765       2
0202535665      10
0202535665     -28
034565976X      -7
080539057X     -15
0905297568      13
0905297568      -5
因此,基本上我需要做的是将ISBN更改为书名,如果匹配,如下所示:

Java from the Beginning -55
Java from the Beginning   2
Software Engineering     10
Software Engineering    -28
Program Construction     -7
Data Structures -15
Chaos Theory     13
Chaos Theory     -5
class Book {
    public final String isbn;
    public final String title;
    public final String author;
    public final int level;

    public Book(String isbn, String title, String author, int level) {
        this.isbn = isbn; this.title = title; this.author = author; this.level = level;
    }
}
我的问题是在下面的代码中标记为1,真的不确定如何检查isbn是否匹配,如果匹配,如何检查哪个标题与isbn匹配并写出它,我认为我的问题是arraylist(我应该制作第三个arraylist)或只是将所有内容制作成数组,任何建议都可以,干杯!!!!顺便说一句,1是完全错误的

import java.util.*;  
import java.io.*;
class inventory{ 
    static void intial(){
        try{
            RandomAccessFile in = new RandomAccessFile("books.dat","r");
            ArrayList<String> list1=new ArrayList<String>();
            String author ,title , isbn;
            int level=0;
            while(in.getFilePointer()<in.length()){
                author = in.readUTF();  // author, at most 20 characters
                title = in.readUTF();   // title, at most 40 characters
                isbn = in.readUTF();    // ISBN
                level = in.readInt();   // level, i.e. copies in stock (>=0)
            //System.out.printf("%5d", isbn+author+title+level);
            System.out.println(isbn+" "+author+" "+title+" "+level);
            list1.add(title);
            list1.add(isbn);
            //list1.add(level);
        }
        in.close();
        System.out.println(" ");
        String isbn2;
        int level2=0;
        //try{
            Scanner out = new Scanner(new File ("transactions.txt"));
            ArrayList<String> list2=new ArrayList<String>();
            while(out.hasNextLine()){
                isbn2 = out.next();
                level2 = out.nextInt();
                System.out.println(isbn2 +" "+level2);
                list2.add(isbn2);
                //list2.add(level2);
            }
            out.close();

     1)     for (isbn: list1){
            for(isbn2: list2){
                if(isbn.contains(isbn2)){
                    System.out.println(title+" "+level);
                }
            }   
        }
        }
        catch(IOException f){
            System.out.println("file error");
            f.printStackTrace();
        }
    }

}
class BookShop{
    public static void main(String[]args){
        inventory x = new inventory();
        x.intial();
import java.util.*;
导入java.io.*;
类别清单{
静态无效初始(){
试一试{
RandomAccessFile in=新的RandomAccessFile(“books.dat”、“r”);
ArrayList list1=新的ArrayList();
字符串作者,标题,isbn;
智力水平=0;
while(in.getFilePointer()=0)
//System.out.printf(“%5d”,isbn+作者+标题+级别);
System.out.println(isbn+“”+作者+“”+标题+“”+级别);
列表1.添加(标题);
列表1.添加(isbn);
//列表1.添加(级别);
}
in.close();
System.out.println(“”);
字符串isbn2;
int level2=0;
//试一试{
扫描器输出=新扫描器(新文件(“transactions.txt”);
ArrayList list2=新的ArrayList();
while(out.hasNextLine()){
isbn2=out.next();
level2=out.nextInt();
System.out.println(isbn2+“”+level2);
列表2.add(isbn2);
//清单2.添加(第2级);
}
out.close();
1) 用于(isbn:list1){
对于(isbn2:list2){
如果(isbn.contains(isbn2)){
系统输出打印项次(标题+“”+级别);
}
}   
}
}
捕获(IOF异常){
System.out.println(“文件错误”);
f、 printStackTrace();
}
}
}
班级书店{
公共静态void main(字符串[]args){
存货x=新存货();
x、 初始();

我会创建一个对象来保存每本书,如下所示:

Java from the Beginning -55
Java from the Beginning   2
Software Engineering     10
Software Engineering    -28
Program Construction     -7
Data Structures -15
Chaos Theory     13
Chaos Theory     -5
class Book {
    public final String isbn;
    public final String title;
    public final String author;
    public final int level;

    public Book(String isbn, String title, String author, int level) {
        this.isbn = isbn; this.title = title; this.author = author; this.level = level;
    }
}
并用Book对象填充ArrayList。这样,一本书的所有内容都位于一个位置,而不需要并行数组


(我编写这个类的方式是不可变的,因为一旦从输入文件中读入对象,您就没有任何理由更新它们。如果这是Python或Haskell,我们只需要使用一个元组,不需要仪式,但使用Java我们没有这个选项。)

我会创建一个对象来保存每本书,如下所示:

Java from the Beginning -55
Java from the Beginning   2
Software Engineering     10
Software Engineering    -28
Program Construction     -7
Data Structures -15
Chaos Theory     13
Chaos Theory     -5
class Book {
    public final String isbn;
    public final String title;
    public final String author;
    public final int level;

    public Book(String isbn, String title, String author, int level) {
        this.isbn = isbn; this.title = title; this.author = author; this.level = level;
    }
}
并用Book对象填充ArrayList。这样,一本书的所有内容都位于一个位置,而不需要并行数组


(我编写这个类的方式是不可变的,因为一旦从输入文件中读入对象,您就没有任何理由更新它们。如果是Python或Haskell,我们只需要使用一个元组,不需要仪式,但使用Java,我们没有这个选项。)

首先创建一个Book对象来存储图书数据

public Book{
    private String ISBN ="";
    private String title="";
    private String author="";
    private int level;
    public Book(String ISBN, String title,String author, int level){
        this.ISBN=ISBN;
        this.title=title;
        this.author=author;
        this.level=level;
    }
    public String getTitle(){
        return title;
    }
    public String getISBN(){
        return ISBN;
    }
    public String getAuthor(){
        return author;
    }
    public int getLevel(){
        return level;
    }
}
将书本对象添加到ArrayList

ArrayList<Book> bkList = new ArrayList<Book>();
bkList.add(new Book('ISBN','Title','Author'));
ArrayList bkList=new ArrayList();
添加(新书('ISBN','Title','Author');
使用Get()方法获取书本数据

Book-tempBook;

对于(int x=0;x,首先创建一个Book对象来存储书本数据

public Book{
    private String ISBN ="";
    private String title="";
    private String author="";
    private int level;
    public Book(String ISBN, String title,String author, int level){
        this.ISBN=ISBN;
        this.title=title;
        this.author=author;
        this.level=level;
    }
    public String getTitle(){
        return title;
    }
    public String getISBN(){
        return ISBN;
    }
    public String getAuthor(){
        return author;
    }
    public int getLevel(){
        return level;
    }
}
将书本对象添加到ArrayList

ArrayList<Book> bkList = new ArrayList<Book>();
bkList.add(new Book('ISBN','Title','Author'));
ArrayList bkList=new ArrayList();
添加(新书('ISBN','Title','Author');
使用Get()方法获取书本数据

Book-tempBook;

对于(int x=0;x由于我将其复制并粘贴到网站上而变得懒惰,因此缩进处于关闭状态,在comp1上缩进良好)代码未编译-2)流应该在finally子句中关闭indication是关闭的,因为我将其复制并粘贴到网站上,并且变得懒惰,缩进在comp1上没有问题1)代码不编译-2)流应该在finally子句中关闭书籍的目录需要从randomAccessFile(“books.dat”)中读取而且更改需要从txt文件(“transactions.txt”)中读取,所以我只需要这样做:while(在.getFilePointer()中不完全是这样。book构造函数需要有ISBN、Author、level和Title.so bkList.add的值(新书('ISBN','Title','Author','level');level不是字符串,而是int.bkList.add(新书)('ISBN','Title','Author',level));书籍的目录需要从一个randomAccessFile(“books.dat”)中读取,更改需要从一个txt文件(“transactions.txt”)中读取,所以我只需执行以下操作:while(in.getFilePointer())不完全正确。图书构造函数需要有ISBN、Author、level和Title.so bkList.add(新书('ISBN','Title','Author','level');level不是字符串,它是一个int.bkList.add(新书('ISBN','Title','Author','level));@安德鲁:对不起,我不明白你的意思question@Andrew对不起,我不明白你的问题