I've been assigned the task of developing a simple Java program based on following:
Write an algorithm to search for reserved book copies, from a list (array) of books using Linear Search, and then store them at the beginning of a newly created array, using an insert algorithm.
I have written the algorithm, but I'm struggling to demonstrate it due to a problem with the last line of the following code:
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)**
}
}
There are lot's of errors in your logic and code conventions
Java uses CamelCase as a practice for writing names of methods, variables, classes, packages and constants. Class names should be nouns, in mixed case with the first letter of each internal word capitalized. Interfaces name should also be capitalized just like class names. Take a look at Java Code conventions
Book[] bookArray = new Book[1];
Back to your code. When you do
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
You must to initialize your array and/or assign an Object to it
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...if you don't define a block, only the next line will be executed. i.e.
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 you want to execute code only if the condition is true you must:
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
}