Witam wszystkich,
Pojawia mi się problem przy kompilacji. Miejsca podejrzane o błędy zaznaczyłem pseudostrzałkami.
Kod:
Main.java
import java.util.Random;
public class Main {
public static void main(String[] args) {
System.out.println("Tworzenie listy: ");
ListaKart lista=new ListaKart();
Random rand=new Random();
int w;
int i=0;
while((w=rand.nextInt(14))!=0) {
int k=rand.nextInt(4);
Karta kart=new Karta(w,k);
/*------->*/ lista.add(kart); //<---------------
}
lista.wyswietlLiczbeKart();
lista.wyswietl();
System.out.println("Wywietlanie waletów: ");
lista.wyswietlWartosc(11);
System.out.println("Usuwanie powtorzen: ");
lista.usunPowt();
System.out.println("Wyswietlanie: ");
lista.wyswietlLiczbeKart();
lista.wyswietl();
}
}
Karta.java
public class Karta {
private int wartosc;
private int kolor;
public Karta(int wartosc, int kolor) {
this.wartosc=wartosc;
this.kolor=kolor;
}
public Karta() {
wartosc=1;
kolor=0;
}
public int getWartosc() {
return wartosc;
}
public int getKolor() {
return kolor;
}
}
ListaKart.java
public class ListaKart implements Lista {
private final static int DEFAULT_INITIAL_CAPACITY=1;
private final int _initialCapacity;
private int _size=0;
private Karta[] _array;
public ListaKart() {
this(DEFAULT_INITIAL_CAPACITY);
}
public ListaKart(int initialCapacity) {
_initialCapacity=initialCapacity;
}
public ListaKart(Karta[] array) {
_initialCapacity=array.length;
clear();
System.arraycopy(array, 0, _array, 0, array.length);
_size=array.length;
}
/*------> public void insert(int i, Karta value) throws IndexOutOfBoundsException {
if (i<0 || i>_array.length) throw new IndexOutOfBoundsException();
ensureCapacity(_size+1);
System.arraycopy(_array, i, _array, i+1, _size-i);
_array[i]=value;
++_size;
}
public void add(Karta value) {
insert(size(),value);
}
//<---------->
public Karta delete(int i) throws IndexOutOfBoundsException {
checkOutOfBounds(i);
Karta value=_array[i];
int copyFrom=i+1;
if (copyFrom<_size)
System.arraycopy(_array, copyFrom, _array, i, _size-copyFrom);
--_size;
return value;
}
public boolean delete(Karta value) {
int index=indexOf(value);
if (index!=-1)
delete(index);
return index!=-1;
}
public void clear() {
_array=new Karta[_initialCapacity];
_size=0;
}
public Karta set(int i, Karta value) throws IndexOutOfBoundsException {
checkOutOfBounds(i);
Karta oldValue=value;
_array[i]=value;
return oldValue;
}
public Karta get(int i) throws IndexOutOfBoundsException {
checkOutOfBounds(i);
return _array[i];
}
public int indexOf(Karta value) {
int i=0;
while (i<_size && value.equals(_array[i]))
i++;
return i<_size ? i : -1;
}
public boolean contains(Karta value) {
return indexOf(value)!=-1;
}
public int size() {
return _size;
}
public boolean isEmpty() {
return _size==0;
}
private void ensureCapacity(int capacity) {
if (_array.length<capacity) {
Karta[] copy=new Karta[capacity+1];
System.arraycopy(_array, 0, copy, 0, _size);
_array=copy;
}
}
private void checkOutOfBounds(int i) {
if (i<0 || i>=_array.length) throw new IndexOutOfBoundsException();
}
public void wyswietlLiczbeKart() {
System.out.println("Ilosc kart: "+size());
}
public String getStringWart(int i) {
switch (i) {
case 1: return "As";
case 11: return "Walet";
case 12: return "Dama";
case 13: return "Krol";
default: return ""+i;
}
}
public String getStringKolor(int i) {
switch(i) {
case 0: return "Kier";
case 1: return "Karo";
case 2: return "Trefl";
case 3: return "Pik";
default: return "";
}
}
public void wyswietl() {
for (int i=0;i<size();i++) {
System.out.printf("%-7s-%-7s\n", getStringWart(_array[i].getWartosc()), getStringKolor(_array[i].getKolor()));
}
}
public void usunPowt() {
for (int i=0;i<size();i++) {
int pom=i;
for (int j=i+1;j<size();j++)
if (!_array[i].equals(_array[j]))
_array[++pom]=_array[j];
_size=++pom;
}
}
public void wyswietlWartosc(int i) {
for (int in=0;in<size();in++) {
if (_array[in].getWartosc()==i)
System.out.printf("%-7s-%-7s\n", getStringWart(_array[i].getWartosc()), getStringKolor(_array[i].getKolor()));
}
}
}
I jeszcze treść błędu: Exception in thread "main" java.lang.NullPointerException
at aisdlabzad3.ListaKart.insert(ListaKart.java:25)
at aisdlabzad3.ListaKart.add(ListaKart.java:33)
at aisdlabzad3.Main.main(Main.java:15)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)