Cześć, mam problem z metodą ZapiszDoPliku, która zapisuje obiekt klasy Lista, mianowicie dostaje plik, w którym jest ciąg znaków, ale nie można nic odczytać. Podejrzewam, że problem to źle napisana metoda, ale nie mam pojęcia gdzie popełniłem błąd.
package pl.samprojektuje.naukajava;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Arrays;
public class Lista implements Serializable {
private int[] liczby;
private final int pojemność;
private int rozmiar;
private int ostatniIndeks;
Lista(int pojemność) {
this.pojemność = pojemność;
this.liczby = new int[pojemność];
this.rozmiar = 0;
}
int dodajElement(int liczbaDodawana) {
if (rozmiar == pojemność) {
throw new IllegalArgumentException("nie można dodać więcej elementów do tablicy");
}
liczby[rozmiar++] = liczbaDodawana;
ostatniIndeks = rozmiar;
return liczbaDodawana;
}
public int getElementLiczby(int index) {
return liczby[index];
}
int znajdź(int szukanaLiczba) {
for (int i = 0; i < rozmiar; i++) {
if (liczby[i] == szukanaLiczba) {
return i;
}
}
return -1;
}
String pisz() {
String atrybutyListy = String.format("Lista: \n pojemność: %d \n rozmiar: %d \n Elementy: ", pojemność, ostatniIndeks);
System.out.print(atrybutyListy);
for (int i = 0; i < ostatniIndeks; i++) {
System.out.print(liczby[i] + " ");
}
System.out.println(" ");
return atrybutyListy;
}
void usunPierwszy(int liczbaUsuwana) {
int indexPowtórzenia = 0;
int ileRazy = 0;
for (int i = 0; i <rozmiar; i++) {
if (liczby[i] == liczbaUsuwana) {
ileRazy++;
if (ileRazy == 2) {
break;
}
indexPowtórzenia = i;
}
}
ostatniIndeks = rozmiar-1;
int[] nowaTablica = new int[ostatniIndeks];
int n = 0;
for (int k = 0; k <ostatniIndeks; k++) {
nowaTablica[k] = liczby[k + n];
if (indexPowtórzenia == k) {
n = 1;
nowaTablica[k] = liczby[k + n];
}
}
liczby = new int[ostatniIndeks];
for (int i = 0; i<ostatniIndeks;i++){
liczby[i] = nowaTablica[i];
}
}
void usunPowtorzenia() {
for (int i = 0; i < ostatniIndeks; i++) {
for (int j = i+1; j < ostatniIndeks; j++){
if(liczby[i]==liczby[j]){
liczby[j] = liczby[ostatniIndeks-1];
ostatniIndeks--;
j--;
}
}
}
int [] tab1 = Arrays.copyOf(liczby,ostatniIndeks);
System.out.println("Tablica bez duplikatów: ");
liczby = new int[ostatniIndeks];
for (int i = 0; i<ostatniIndeks;i++){
liczby[i] = tab1[i];
}
}
void odwroc(){
int tmp = 0;
int [] array2 = new int[ostatniIndeks];
for (int i = ostatniIndeks-1;i>=0;i--){
array2[tmp] = liczby[i];
tmp++;
}
for (int k = 0;k<ostatniIndeks;k++){
liczby [k] = array2[k];
}
}
void zapiszDoPliku(Lista l, String nazwa) {
try{
FileOutputStream fs = new FileOutputStream(nazwa);
ObjectOutputStream o = new ObjectOutputStream(fs);
o.writeObject(l);
fs.close();
o.close();
}
catch(Exception e){
e.getMessage();
}
}
}
package pl.samprojektuje.naukajava;
public class main {
public static void main(String[] args) {
Lista l = new Lista(10);
for (int i = 0; i<5;++i){
l.dodajElement((1<<i));
}
l.dodajElement(2);
l.dodajElement(1);
l.dodajElement(1);
l.pisz();
l.usunPierwszy(2);
l.pisz();
l.usunPowtorzenia();
l.pisz();
l.odwroc();
l.pisz();
l.zapiszDoPliku(l,"plik.txt");
}
}
scibi92scibi92