Java-将所有ArrayList元素打印为单个字符串

Java-将所有ArrayList元素打印为单个字符串,java,arraylist,printing,tostring,Java,Arraylist,Printing,Tostring,我的程序打印出一个库。每个图书馆都由书组成。每本书都有一个书名和作者。我有一个驱动程序、一个库类和一个图书类。我的问题是,当我使用在library和book类中使用我的toString()方法打印库的驱动程序时,每本书的作者都显示为[author,;,author,;,author],我希望他们以作者的身份打印;作者作者 预期输出: 我的输出: 我的输入: getAuthors是我的驱动程序中分隔作者的方法(在输入文件中,作者从作者处获取,用“*”分隔,而不是用“;”分隔,这是我在输出中需要的)

我的程序打印出一个库。每个图书馆都由书组成。每本书都有一个书名和作者。我有一个驱动程序、一个库类和一个图书类。我的问题是,当我使用在library和book类中使用我的
toString()
方法打印库的驱动程序时,每本书的作者都显示为
[author,;,author,;,author]
,我希望他们以
作者的身份打印;作者作者

预期输出:

我的输出:

我的输入:

getAuthors
是我的驱动程序中分隔作者的方法(在输入文件中,作者从作者处获取,用“*”分隔,而不是用“;”分隔,这是我在输出中需要的)

如果信息太少,太多,或者我给出的内容太混乱,或者我没有正确解释,请在评论中告诉我。我是Java新手,在这里发帖是相当新的,所以请对我放松点。谢谢大家!

编辑:以防万一,这里是我的三门课(只有重要的内容):

Book.java:

import java.util.*;

public class Book implements Comparable<Book>
{

   private final String myTitle;
   private final ArrayList<String> myAuthors;

   public Book(final String theTitle, final ArrayList<String> theAuthors)
   {
      if (theTitle == "" || theAuthors.isEmpty() ||
          theTitle == null || theAuthors.get(0) == null)
      {
         throw new IllegalArgumentException(
         "The book must have a valid title AND author.");
      }
      else
      {
         myTitle = theTitle;
         myAuthors = new ArrayList<String>();
         for (int i = 0; i < theAuthors.size(); i++)
         {
            myAuthors.add(theAuthors.get(i));
         }
      }
   }

   public String toString() 
   { 
      String result = "\"" + myTitle + "\" by ";

      for (int i = 0; i < myAuthors.size(); i++)
      {
         result += (String)myAuthors.get(i);
      }
      return result;

   }
}
import java.util.*;
public class Library
{

   public Library(final ArrayList<Book> theOther)
   {
      if (theOther == null)
      {
         throw new NullPointerException();
      }
      else
      {
         myBooks = new ArrayList<Book>();
         for (int i = 0; i < theOther.size(); i++)
         {
            myBooks.add(theOther.get(i));
         }
      }
   }

   public ArrayList<Book> findTitles(final String theTitle)
   {
      ArrayList<Book> titleList = new ArrayList<Book>();
      for (int i = 0; i < myBooks.size(); i++)
      {
         if (myBooks.get(i).getTitle().equals(theTitle))
         {
            titleList.add(myBooks.get(i));
         }
      }
      return titleList;
   }

   public String toString()
   {
      String result = "";
      for (int i = 0; i < myBooks.size(); i++)
      {

         String tempTitle = myBooks.get(i).getTitle();
         ArrayList<String> tempAuthors = myBooks.get(i).getAuthors();
         Book tempBook = new Book(tempTitle, tempAuthors);
         result += (tempBook + "\n");
      }
      return result;
   }
}
import java.util.*;
import java.io.*;

public class LibraryDriver
{
   public static void main(String[] theArgs)
   {
      Scanner inputFile = null;
      PrintStream outputFile = null;
      ArrayList<String> authors = new ArrayList<String>();
      ArrayList<Book> books = new ArrayList<Book>();
      ArrayList<Book> books2 = new ArrayList<Book>();

      String[] filesInputs = new String[]{"LibraryIn1.txt", "LibraryIn2.txt"};

      try 
      { 
         outputFile = new PrintStream(new File("LibraryOut.txt")); 
         for (String fileInput : filesInputs) 
         { 
            inputFile = new Scanner(new File(fileInput)); 
            while (inputFile.hasNext()) 
            { 
               String title = ""; 
               String input = inputFile.nextLine(); 
               //Read title 
               title = input; 
               input = inputFile.nextLine(); 
               authors = getAuthors(input); 

               //Insert title & authors into a book 
               Book tempBook = new Book(title, authors); 
               //Add this book to the ArrayList<Book> of books 
               books.add(tempBook); 

            } 
            Library myLib = new Library(books);
            outputFile.println(myLib);
            inputFile.close(); 
            myLib.sort();
            outputFile.println(myLib);
         } 
      } 
      catch (Exception e) 
      { 
         System.out.println("Difficulties opening the file! " + e); 
         System.exit(1); 
      }
      inputFile.close();
      outputFile.close();
   }
   public static ArrayList<String> getAuthors(String theAuthors)
   {
      int lastAsteriskIndex = 0;
      ArrayList<String> authorList = new ArrayList<String>();
      for (int i = 0; i < theAuthors.length(); i++)
      {
         if (theAuthors.charAt(i) == '*')
         {
            if (lastAsteriskIndex > 0)
            {
               authorList.add(";");
               authorList.add(theAuthors.substring(lastAsteriskIndex + 1, i));
            }
            else
            {
               authorList.add(theAuthors.substring(0, i));
            }
            lastAsteriskIndex = i;
         }
      }
      if (lastAsteriskIndex == 0)
      {
         authorList.add(theAuthors);
      }
      return authorList;
   } 
}
import java.util.*;
公共类书
{
私有最终字符串myTitle;
私人最终ArrayList myAuthors;
公共书籍(最终字符串标题,最终数组列表作者)
{
if(theTitle==“”| | theAuthors.isEmpty()||
标题==null | |作者。获取(0)==null)
{
抛出新的IllegalArgumentException(
“这本书必须有有效的书名和作者。”);
}
其他的
{
myTitle=标题;
myAuthors=newarraylist();
对于(int i=0;i
Library.java:

import java.util.*;

public class Book implements Comparable<Book>
{

   private final String myTitle;
   private final ArrayList<String> myAuthors;

   public Book(final String theTitle, final ArrayList<String> theAuthors)
   {
      if (theTitle == "" || theAuthors.isEmpty() ||
          theTitle == null || theAuthors.get(0) == null)
      {
         throw new IllegalArgumentException(
         "The book must have a valid title AND author.");
      }
      else
      {
         myTitle = theTitle;
         myAuthors = new ArrayList<String>();
         for (int i = 0; i < theAuthors.size(); i++)
         {
            myAuthors.add(theAuthors.get(i));
         }
      }
   }

   public String toString() 
   { 
      String result = "\"" + myTitle + "\" by ";

      for (int i = 0; i < myAuthors.size(); i++)
      {
         result += (String)myAuthors.get(i);
      }
      return result;

   }
}
import java.util.*;
public class Library
{

   public Library(final ArrayList<Book> theOther)
   {
      if (theOther == null)
      {
         throw new NullPointerException();
      }
      else
      {
         myBooks = new ArrayList<Book>();
         for (int i = 0; i < theOther.size(); i++)
         {
            myBooks.add(theOther.get(i));
         }
      }
   }

   public ArrayList<Book> findTitles(final String theTitle)
   {
      ArrayList<Book> titleList = new ArrayList<Book>();
      for (int i = 0; i < myBooks.size(); i++)
      {
         if (myBooks.get(i).getTitle().equals(theTitle))
         {
            titleList.add(myBooks.get(i));
         }
      }
      return titleList;
   }

   public String toString()
   {
      String result = "";
      for (int i = 0; i < myBooks.size(); i++)
      {

         String tempTitle = myBooks.get(i).getTitle();
         ArrayList<String> tempAuthors = myBooks.get(i).getAuthors();
         Book tempBook = new Book(tempTitle, tempAuthors);
         result += (tempBook + "\n");
      }
      return result;
   }
}
import java.util.*;
import java.io.*;

public class LibraryDriver
{
   public static void main(String[] theArgs)
   {
      Scanner inputFile = null;
      PrintStream outputFile = null;
      ArrayList<String> authors = new ArrayList<String>();
      ArrayList<Book> books = new ArrayList<Book>();
      ArrayList<Book> books2 = new ArrayList<Book>();

      String[] filesInputs = new String[]{"LibraryIn1.txt", "LibraryIn2.txt"};

      try 
      { 
         outputFile = new PrintStream(new File("LibraryOut.txt")); 
         for (String fileInput : filesInputs) 
         { 
            inputFile = new Scanner(new File(fileInput)); 
            while (inputFile.hasNext()) 
            { 
               String title = ""; 
               String input = inputFile.nextLine(); 
               //Read title 
               title = input; 
               input = inputFile.nextLine(); 
               authors = getAuthors(input); 

               //Insert title & authors into a book 
               Book tempBook = new Book(title, authors); 
               //Add this book to the ArrayList<Book> of books 
               books.add(tempBook); 

            } 
            Library myLib = new Library(books);
            outputFile.println(myLib);
            inputFile.close(); 
            myLib.sort();
            outputFile.println(myLib);
         } 
      } 
      catch (Exception e) 
      { 
         System.out.println("Difficulties opening the file! " + e); 
         System.exit(1); 
      }
      inputFile.close();
      outputFile.close();
   }
   public static ArrayList<String> getAuthors(String theAuthors)
   {
      int lastAsteriskIndex = 0;
      ArrayList<String> authorList = new ArrayList<String>();
      for (int i = 0; i < theAuthors.length(); i++)
      {
         if (theAuthors.charAt(i) == '*')
         {
            if (lastAsteriskIndex > 0)
            {
               authorList.add(";");
               authorList.add(theAuthors.substring(lastAsteriskIndex + 1, i));
            }
            else
            {
               authorList.add(theAuthors.substring(0, i));
            }
            lastAsteriskIndex = i;
         }
      }
      if (lastAsteriskIndex == 0)
      {
         authorList.add(theAuthors);
      }
      return authorList;
   } 
}
import java.util.*;
公共班级图书馆
{
公共图书馆(最终阵列列表)
{
如果(其他==null)
{
抛出新的NullPointerException();
}
其他的
{
myBooks=newArrayList();
对于(int i=0;i
LibraryDriver.java:

import java.util.*;

public class Book implements Comparable<Book>
{

   private final String myTitle;
   private final ArrayList<String> myAuthors;

   public Book(final String theTitle, final ArrayList<String> theAuthors)
   {
      if (theTitle == "" || theAuthors.isEmpty() ||
          theTitle == null || theAuthors.get(0) == null)
      {
         throw new IllegalArgumentException(
         "The book must have a valid title AND author.");
      }
      else
      {
         myTitle = theTitle;
         myAuthors = new ArrayList<String>();
         for (int i = 0; i < theAuthors.size(); i++)
         {
            myAuthors.add(theAuthors.get(i));
         }
      }
   }

   public String toString() 
   { 
      String result = "\"" + myTitle + "\" by ";

      for (int i = 0; i < myAuthors.size(); i++)
      {
         result += (String)myAuthors.get(i);
      }
      return result;

   }
}
import java.util.*;
public class Library
{

   public Library(final ArrayList<Book> theOther)
   {
      if (theOther == null)
      {
         throw new NullPointerException();
      }
      else
      {
         myBooks = new ArrayList<Book>();
         for (int i = 0; i < theOther.size(); i++)
         {
            myBooks.add(theOther.get(i));
         }
      }
   }

   public ArrayList<Book> findTitles(final String theTitle)
   {
      ArrayList<Book> titleList = new ArrayList<Book>();
      for (int i = 0; i < myBooks.size(); i++)
      {
         if (myBooks.get(i).getTitle().equals(theTitle))
         {
            titleList.add(myBooks.get(i));
         }
      }
      return titleList;
   }

   public String toString()
   {
      String result = "";
      for (int i = 0; i < myBooks.size(); i++)
      {

         String tempTitle = myBooks.get(i).getTitle();
         ArrayList<String> tempAuthors = myBooks.get(i).getAuthors();
         Book tempBook = new Book(tempTitle, tempAuthors);
         result += (tempBook + "\n");
      }
      return result;
   }
}
import java.util.*;
import java.io.*;

public class LibraryDriver
{
   public static void main(String[] theArgs)
   {
      Scanner inputFile = null;
      PrintStream outputFile = null;
      ArrayList<String> authors = new ArrayList<String>();
      ArrayList<Book> books = new ArrayList<Book>();
      ArrayList<Book> books2 = new ArrayList<Book>();

      String[] filesInputs = new String[]{"LibraryIn1.txt", "LibraryIn2.txt"};

      try 
      { 
         outputFile = new PrintStream(new File("LibraryOut.txt")); 
         for (String fileInput : filesInputs) 
         { 
            inputFile = new Scanner(new File(fileInput)); 
            while (inputFile.hasNext()) 
            { 
               String title = ""; 
               String input = inputFile.nextLine(); 
               //Read title 
               title = input; 
               input = inputFile.nextLine(); 
               authors = getAuthors(input); 

               //Insert title & authors into a book 
               Book tempBook = new Book(title, authors); 
               //Add this book to the ArrayList<Book> of books 
               books.add(tempBook); 

            } 
            Library myLib = new Library(books);
            outputFile.println(myLib);
            inputFile.close(); 
            myLib.sort();
            outputFile.println(myLib);
         } 
      } 
      catch (Exception e) 
      { 
         System.out.println("Difficulties opening the file! " + e); 
         System.exit(1); 
      }
      inputFile.close();
      outputFile.close();
   }
   public static ArrayList<String> getAuthors(String theAuthors)
   {
      int lastAsteriskIndex = 0;
      ArrayList<String> authorList = new ArrayList<String>();
      for (int i = 0; i < theAuthors.length(); i++)
      {
         if (theAuthors.charAt(i) == '*')
         {
            if (lastAsteriskIndex > 0)
            {
               authorList.add(";");
               authorList.add(theAuthors.substring(lastAsteriskIndex + 1, i));
            }
            else
            {
               authorList.add(theAuthors.substring(0, i));
            }
            lastAsteriskIndex = i;
         }
      }
      if (lastAsteriskIndex == 0)
      {
         authorList.add(theAuthors);
      }
      return authorList;
   } 
}
import java.util.*;
导入java.io.*;
公共类库驱动程序
{
公共静态void main(字符串[]字符)
{
扫描仪输入文件=空;
PrintStream outputFile=null;
ArrayList authors=新建ArrayList();
ArrayList books=新建ArrayList();
ArrayList books2=新的ArrayList();
String[]FileInputs=新字符串[]{“libraryn1.txt”、“libraryn2.txt”};
尝试
{ 
outputFile=新的打印流(新文件(“LibraryOut.txt”);
for(字符串文件输入:文件输入)
{ 
inputFile=新扫描仪(新文件(fileInput));
while(inputFile.hasNext())
{ 
字符串标题=”;
字符串输入=inputFile.nextLine();
//阅读标题
标题=输入;
input=inputFile.nextLine();
authors=getAuthors(输入);
//在书中插入标题和作者
Book tempBook=新书(标题、作者);
//将本书添加到书籍的ArrayList中
books.add(tempBook);
} 
图书馆myLib=新图书馆(图书);
println(myLib);
inputFile.close();
myLib.sort();
println(myLib);
} 
} 
捕获(例外e)
{ 
System.out.println(“打开文件有困难!”+e);
系统出口(1);
}
inputFile.close();
outputFile.close();
}
公共静态数组列表getAuthors(字符串authors)
{
int lastAsteriskIndex=0;
ArrayList authorList=新的ArrayList();
for(int i=0;i0)
{
authorList.add(“;”);
添加(authors.substring(lastAsteriskIndex+1,i));
}
其他的
{
add(authors.substring(0,i));
}
lastAsteriskIndex=i;
}
}
如果(lastAsteriskIndex==0)
{
添加(作者);
}
返回作者列表;
} 
}

所以,我尽我所能并使用

The Hobbit
Tolkien, J.R.R
Acer Dumpling
Doofus, Robert
作为输入,我得到

"The Hobbit" by Tolkien, J.R.R
"Acer Dumpling" by Doofus, Robert
守则:

import java.io.File;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner;

public class LibraryDriver {

    public static void main(String[] theArgs) {

//      ArrayList<Book> books = new ArrayList<>(25);
//      books.add(
//                      new Book("Bananas in pajamas", 
//                                      new ArrayList<>(Arrays.asList(new String[]{"B1", "B2"}))));
//      
//      Library lib = new Library(books);
//      System.out.println(lib.toString());
        Scanner inputFile = null;
        PrintStream outputFile = null;
        ArrayList<String> authors = new ArrayList<String>();
        ArrayList<Book> books = new ArrayList<Book>();
        ArrayList<Book> books2 = new ArrayList<Book>();

        String[] filesInputs = new String[]{"LibraryIn1.txt"}; //, "LibraryIn2.txt"};

        try {
            outputFile = new PrintStream(new File("LibraryOut.txt"));
            for (String fileInput : filesInputs) {
                inputFile = new Scanner(new File(fileInput));
                while (inputFile.hasNext()) {
                    String title = "";
                    String input = inputFile.nextLine();
                    //Read title 
                    title = input;
                    input = inputFile.nextLine();
                    authors = getAuthors(input);

                    //Insert title & authors into a book 
                    Book tempBook = new Book(title, authors);
                    //Add this book to the ArrayList<Book> of books 
                    books.add(tempBook);

                }
                Library myLib = new Library(books);
                outputFile.println(myLib);
                inputFile.close();
//              myLib.sort();
//              outputFile.println(myLib);
            }
        } catch (Exception e) {
            System.out.println("Difficulties opening the file! " + e);
            System.exit(1);
        }
        inputFile.close();
        outputFile.close();
    }

    public static ArrayList<String> getAuthors(String theAuthors) {
        int lastAsteriskIndex = 0;
        ArrayList<String> authorList = new ArrayList<String>();
        for (int i = 0; i < theAuthors.length(); i++) {
            if (theAuthors.charAt(i) == '*') {
                if (lastAsteriskIndex > 0) {
                    authorList.add(";");
                    authorList.add(theAuthors.substring(lastAsteriskIndex + 1, i));
                } else {
                    authorList.add(theAuthors.substring(0, i));
                }
                lastAsteriskIndex = i;
            }
        }
        if (lastAsteriskIndex == 0) {
            authorList.add(theAuthors);
        }
        return authorList;
    }

    public static class Library {

        private ArrayList<Book> myBooks;

        public Library(final ArrayList<Book> theOther) {
            if (theOther == null) {
                throw new NullPointerException();
            } else {
                myBooks = new ArrayList<Book>();
                for (int i = 0; i < theOther.size(); i++) {
                    myBooks.add(theOther.get(i));
                }
            }
        }

        public ArrayList<Book> findTitles(final String theTitle) {
            ArrayList<Book> titleList = new ArrayList<Book>();
            for (int i = 0; i < myBooks.size(); i++) {
                if (myBooks.get(i).getTitle().equals(theTitle)) {
                    titleList.add(myBooks.get(i));
                }
            }
            return titleList;
        }

        public String toString() {
            String result = "";
            for (int i = 0; i < myBooks.size(); i++) {

                String tempTitle = myBooks.get(i).getTitle();
                Book b = myBooks.get(i);
                ArrayList<String> tempAuthors = b.getAuthors();
                Book tempBook = new Book(tempTitle, tempAuthors);
                result += (tempBook + "\n");
            }
            return result;
        }
    }

    public static class Book implements Comparable<Book> {

        private final String myTitle;
        private final ArrayList<String> myAuthors;

        public Book(final String theTitle, final ArrayList<String> theAuthors) {
            if (theTitle == "" || theAuthors.isEmpty()
                            || theTitle == null || theAuthors.get(0) == null) {
                throw new IllegalArgumentException(
                                "The book must have a valid title AND author.");
            } else {
                myTitle = theTitle;
                myAuthors = new ArrayList<String>();
                for (int i = 0; i < theAuthors.size(); i++) {
                    myAuthors.add(theAuthors.get(i));
                }
            }
        }

        public String toString() {
            String result = "\"" + myTitle + "\" by ";

            for (int i = 0; i < myAuthors.size(); i++) {
                result += (String) myAuthors.get(i);
            }
            return result;

        }

        @Override
        public int compareTo(Book o) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        public String getTitle() {
            return myTitle;
        }

        public ArrayList<String> getAuthors(String theAuthors) {
            int lastAsteriskIndex = 0;
            ArrayList<String> authorList = new ArrayList<String>();
            for (int i = 0; i < theAuthors.length(); i++) {
                if (theAuthors.charAt(i) == '*') {
                    if (lastAsteriskIndex > 0) {
                        authorList.add(";");
                        authorList.add(theAuthors.substring(lastAsteriskIndex + 1, i));
                    } else {
                        authorList.add(theAuthors.substring(0, i));
                    }
                    lastAsteriskIndex = i;
                }
            }
            if (lastAsteriskIndex == 0) {
                authorList.add(theAuthors);
            }
            return authorList;
        }

        public ArrayList<String> getAuthors() {
            return myAuthors;
        }
    }
}
导入java.io.File;
导入java.io.PrintStream;
导入java.util.ArrayList;
导入java.util.Scanner;
公共类库驱动程序{
公共静态void main(字符串[]字符){
//ArrayList图书=新ArrayList(25);
//books.add(
//新书(“香蕉果酱”