Java 代码中的ArrayList问题,有什么建议吗?
我在将ISBN号改为书名时遇到问题 开始打印ISBN、作者、书名和剩余图书级别: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
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对不起,我不明白你的问题