0

我被分配了基于以下内容开发简单 Java 程序的任务:

编写一个算法以使用线性搜索从书籍列表(数组)中搜索保留的书籍副本,然后使用插入算法将它们存储在新创建的数组的开头。

我已经编写了算法,但由于以下代码的最后一行存在问题,我正在努力演示它:

package javaapplicationadt2;

public class Books
{

    public String ISBN;               // class properties
    public String title;
    public int copies;
    boolean reserved = true;

    public static void main(String[] args)
    {

        Books[] Book1 = new Books[1];
        Books[] Book2 = new Books[1];

        Book1[0].ISBN = "ISBN-00001";
        Book1[0].title = "Algorithms that torture minds";
        Book1[0].copies = 2;
        Book1[0].reserved = true;

        Book2[0].ISBN = "ISBN-00002";
        Book2[0].title = "Lecture Slides that defied practical Java Programming !";
        Book2[0].copies = 1;
        Book2[0].reserved = false;

        for (int i = 0; i < Book1.length; i++)
            if (Book1[i].reserved = true)
                for (int j = Book2.length - 1; j > 0; j++)
                    Book2[j] = Book2[j - 1];
     *Book2[0] = Book1[i].title;*   **(Incompatible types:
    Books cannot be converted to a String)**

    }
}
4

1 回答 1

1

您的逻辑和代码约定中有很多错误

Java 使用 CamelCase 作为编写方法、变量、类、包和常量名称的习惯。类名应该是名词,大小写混合,每个内部单词的首字母大写。接口名称也应该像类名一样大写。看看Java 代码约定

Book[] bookArray = new Book[1];

回到你的代码。当你这样做

Book[] book1 = new Book[1]; //Create an Array of Books -> all elements are NULL
book1[0].ISBN = "ISBN-00001"; // book1[0] is NULL so a NullPointException will be throw

您必须初始化您的数组和/或为其分配一个对象

Book[] bookArray = new Book[1];
Book book = new Book();
Book[0] = book; //Now you have an Object Book at Book[0] and you can set the properties    
bookArray[0].ISBN = "ISBN-00001";

For and If...如果不定义块,只会执行下一行。IE

 if(true == bookArray[0].reserved)
     System.out.println("1");//This will be executed only if condition is true
     System.out.println("2"); //This will be executed no matter what

如果您只想在条件为真时执行代码,您必须:

if(true == bookArray[0].reserved){
     System.out.println("1");//This will be executed only if condition is true
     System.out.println("2"); //This will be executed only if condition is true
}
于 2018-03-31T00:06:46.277 回答