Jako że to mój pierwszy post witam wszystkich
Oto mój program który obecnie pisze, nie mam pojęcia skąd, ale nagle pojawił mi się błąd:
Exception in thread "main" java.lang.ClassCastException: java.lang.Class cannot be cast to library.Biblioteka
at library.Biblioteka.odczytKsiazek(Biblioteka.java:102)
at library.ProsteMenu$Baza_Biblioteki.main(ProsteMenu.java:52)
Pomoże ktoś ? Jak jeszcze działało, to miałem problem z zapisaniem zmian w książkach za pomocą zmianaDanych() nie wiem jak podmienić tylko te wartości które chce, z tym bym tez prosił o pomoc
package library;
import java.io.*;
import java.util.Scanner;
public class ProsteMenu {
public static void wyswietlMenu() {
// czyscEkran();
String menu = "============================================\n"
+ "|| == MENU == ||\n"
+ "============================================\n"
+ "1. Wyswietlanie listy ksiazek w skróconym formacie\n"
+ "2. Wyswietlanie listy ksiazek w pełnym formacie\n"
+ "3. Dodawanie książek\n" + "4. Modyfikacja danych książki\n"
+ "0. Koniec";
System.out.println(menu);
}
public static void pelenZapisKsiazek() throws IOException {
Biblioteka z = Biblioteka.odczytKsiazek("D:\\Biblioteka.dat");
for (int i = 0; i < z.ileKsiazek; i++) {
System.out.print(z.ksiazki[i].id + " " + z.ksiazki[i].tytul + " "
+ z.ksiazki[i].imionaAutora + " "
+ z.ksiazki[i].nazwiskoAutora + " " + z.ksiazki[i].rok
+ " ");
for (int x = 0; x < z.ksiazki[i].kategorie.length; x++)
System.out.print(z.ksiazki[i].kategorie[x] + " ");
System.out.println(z.ksiazki[i].czyWypozyczona);
}
}
public static void skroconyZapisKsiazek() throws IOException {
Biblioteka z = Biblioteka.odczytKsiazek("D:\\Biblioteka.dat");
for (int i = 0; i < z.ileKsiazek; i++) {
System.out.print(z.ksiazki[i].id + " " + z.ksiazki[i].imionaAutora
+ " " + z.ksiazki[i].nazwiskoAutora + " "
+ z.ksiazki[i].tytul + " ");
for (int x = 0; x < z.ksiazki[i].kategorie.length; x++)
System.out.print(z.ksiazki[i].kategorie[x] + " ");
System.out.println(z.ksiazki[i].czyWypozyczona);
}
}
public static class Baza_Biblioteki implements Serializable {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
Biblioteka z = Biblioteka.odczytKsiazek("D:\\Biblioteka.dat");
Scanner in = new Scanner(System.in);
wyswietlMenu();
System.out.print("Wybierz opcję:");
int wybor = in.nextInt();
while (wybor != 0) { // powtarzaj dopóki użytkownik nie poda 0
switch (wybor) {
case 1:
skroconyZapisKsiazek();
break;
case 2:
pelenZapisKsiazek();
break;
case 3: {
z.dodajKsiazke();
z.zapiszDoPliku("D:\\Biblioteka.dat");
}
break;
case 4: {
// System.out.print("Podaj Id książkai: ");
// int l=in.nextInt();
// z.zmianaDanych("D:\\Biblioteka.dat",l);
}
break;
default:
System.out.println("Nie ma takiej opcji!");
}
wyswietlMenu();
System.out.print("Wybierz opcję:");
wybor = in.nextInt();
}
}
}
}
```java
package library;
import java.io.*;
import java.util.Scanner;
public class Biblioteka implements Serializable {
public static final long serialVersionUID = 5071368412419619264L;
public Ksiazka[] ksiazki;
public int maxKsiazek;
public int ileKsiazek;
public int kolejneId = 0;
static Scanner in = new Scanner(System.in);
public int id;
public String tytul;
public String nazwaPliku = "D:\\Biblioteka.dat";
public Biblioteka() {
maxKsiazek = 1000;
ksiazki = new Ksiazka[maxKsiazek];
ileKsiazek = 0;
}
public static String[] wybierzKategorie() {
String[] kat = { "aa", "bb" };
String wybKat = "";
int wybor;
do {
System.out.println("Wybierz kategorię:");
for (int i = 0; i < kat.length; i++) {
System.out.println((i + 1) + "." + kat[i]);
}
System.out.println("0.Koniec");
wybor = in.nextInt();
if (wybor != 0) {
if (wybKat.length() > 0) {
wybKat += "," + kat[wybor - 1];
} else {
wybKat = kat[wybor - 1];
}
}
} while (wybor != 0);
return wybKat.split(",");
}
public void dodajKsiazke() throws IOException {
if (ileKsiazek < 1000) {
int id = kolejneId++;
System.out.print("Tytuł: ");
String tytul = in.nextLine();
System.out.println();
System.out.print("Nazwisko autora: ");
String nazwiskoAutora = in.nextLine();
System.out.println();
System.out.print("Imiona autora: ");
String imionaAutora = in.nextLine();
System.out.println();
System.out.print("Rok wydania: ");
int rok = in.nextInt();
System.out.println();
String[] kat = Biblioteka.wybierzKategorie();
Ksiazka k1 = new Ksiazka(id, tytul, nazwiskoAutora, imionaAutora,
rok, kat, false, 0);
ksiazki[ileKsiazek] = k1;
ileKsiazek++;
zapiszDoPliku(nazwaPliku);
} else {
System.out.print("Przykro nam, biblioteka jest pełna");
}
}
public void zapiszDoPliku(String nazwaPliku2) throws IOException {
ObjectOutputStream plik = null;
try {
plik = new ObjectOutputStream(new FileOutputStream(nazwaPliku2));
plik.writeObject(this);
} finally {
if (plik != null) {
plik.close();
}
}
}
public static Biblioteka odczytKsiazek(String nazwaPliku3)throws IOException {
ObjectInputStream plik = null;
Biblioteka z = null;
try {
plik = new ObjectInputStream(new FileInputStream(nazwaPliku3));
z = (Biblioteka) plik.readObject();
} catch (ClassNotFoundException ex) {
System.out.println("Nie ma takiej klasy");
} catch (FileNotFoundException e) {
return new Biblioteka();
} finally {
if (plik != null) {
plik.close();
}
}
return z;
}
public static void wyswietlMenu2() {
// czyscEkran();
String menu = "============================================\n"
+ "|| == Zmień == ||\n"
+ "============================================\n"
+ "1. Tytuł\n" + "2. Imiona autora\n" + "3. Nazwisko\n"
+ "4. Rok\n" + "5. Kategorie\n" + "0. Koniec";
System.out.println(menu);
}
public static Ksiazka zmianaDanych(String nazwaPliku4, int id2)
throws IOException {
ObjectInputStream plik = null;
Scanner in = new Scanner(System.in);
try {
plik = new ObjectInputStream(new FileInputStream(nazwaPliku4));
Biblioteka a = Biblioteka.odczytKsiazek("D:\\Biblioteka.dat");
Biblioteka q = Biblioteka.odczytKsiazek("D:\\Biblioteka.dat");
for (int i = 0; i < a.ileKsiazek; i++) {
if (id2 == a.ksiazki[i].id) {
int i1;
for ( i1 = 0; i1 < q.ileKsiazek; i1++ ) {
System.out.print(q.ksiazki[i1].id+" "+ q.ksiazki[i1].tytul+" "+ q.ksiazki[i1].imionaAutora + " " + q.ksiazki[i1].nazwiskoAutora + " " + q.ksiazki[i1].rok + " " );
for (int x=0;x<q.ksiazki[i1].kategorie.length;x++){
System.out.print(q.ksiazki[i1].kategorie[x] + " ");
System.out.println(q.ksiazki[i1].czyWypozyczona);
}
}}
wyswietlMenu2();
System.out.println("Jakie dane chcesz zmienić ?");
int wybor2 = in.nextInt();
Biblioteka z = Biblioteka.odczytKsiazek("D:\\Biblioteka.dat");
while (wybor2 != 0) { // powtarzaj dopóki użytkownik nie poda 0
switch (wybor2) {
case 1:
System.out.print("Tytuł: ");
in.nextLine();
String tytul = in.nextLine();
z.ksiazki[i].tytul = tytul;
break;
case 2: {
System.out.print("Imiona autora: ");
in.nextLine();
String imionaAutora = in.nextLine();
z.ksiazki[i].imionaAutora = imionaAutora;
}
break;
case 3: {
System.out.print("Nazwisko autora: ");
in.nextLine();
String nazwiskoAutora = in.nextLine();
z.ksiazki[i].nazwiskoAutora = nazwiskoAutora;
}
break;
case 4: {
System.out.print("Rok wydania: ");
int rok = in.nextInt();
z.ksiazki[i].rok = rok;
}
break;
case 5: {
//String[] kat = Biblioteka.wybierzKategorie();
}
break;
default:
System.out.println("Nie ma takiej opcji!");
}
wyswietlMenu2();
System.out.print("Wybierz opcję:");
wybor2 = in.nextInt();
}
}
} finally {
if (plik != null) {
plik.close();
}
}
return null;
}
}
package library;
import java.io.*;
public class Ksiazka implements Serializable {
private static final long serialVersionUID = 5038991704219001037L;
public int id;
public String tytul;
public String nazwiskoAutora;
public String imionaAutora;
public int rok;
public String[] kategorie;
public boolean czyWypozyczona = false; // domyślnie książka jest w zasobach
// biblioteki
int liczbaWypozyczen; // ile razy książka została wypożyczona i zwrócona
public Ksiazka(int id, String tytul, String nazwiskoAutora,
String imionaAutora, int rok, String[] kategorie,
boolean czyWypozyczona, int liczbaWypozyczen) {
this.id = id;
this.tytul = tytul;
this.nazwiskoAutora = nazwiskoAutora;
this.imionaAutora = imionaAutora;
this.rok = rok;
this.kategorie = new String[kategorie.length];
for (int i = 0; i < kategorie.length; i++) {
this.kategorie[i] = kategorie[i];
}
this.czyWypozyczona = czyWypozyczona;
this.liczbaWypozyczen = liczbaWypozyczen;
}
}