我对Java有点陌生,在我的一个类中,我们不得不从我们自己的接口中实现Vector库。但是,我们列表中的主题之一是实现一种方法,以找到该向量内的最大和最小数字...经过一些测试(阅读“ Entere night and a night”),结果是代码返回了NullPointerException。我需要一些帮助来解决它。
这是我到目前为止所取得的成就:
public class ListaLinearVetor implements IListaLinear {
private Object[] elementos;
private int fim;
private int qtde;
private int biggest;
private int smallest;
public int getBiggest() {
return this.biggest;
}
public int getSmallest() {
return this.smallest;
}
public ListaLinearVetor(int tamanho) {
this.elementos = new Object[tamanho];
this.fim = 0;
this.qtde = 0;
}
@Override
public int size() {
return this.qtde;
}
@Override
public boolean isEmpty() {
return (this.qtde == 0);
}
private boolean isFull() {
return this.fim >= this.elementos.length;
}
@Override
public boolean add(Object obj) {
if(this.isEmpty()) {
this.biggest = 0;
this.smallest = 0;
}
if ( !isFull() ) {
this.elementos[this.fim] = obj;
this.fim++;
this.qtde++;
this.findBiggestAndSmallest();
return true;
}
return false;
}
@Override
public boolean add(int pos, Object obj) {
if ( !isFull() && pos < this.fim ) {
for(int i=this.fim-1 ; i >= pos ; i--) {
this.elementos[i+1] = this.elementos[i];
}
this.elementos[pos] = obj;
this.fim++;
this.qtde++;
this.findBiggestAndSmallest();
return true;
}
else if( !isFull() && pos >= this.fim) {
return this.add(obj);
}
return false;
}
@Override
public Object get(int pos) {
if (pos < this.fim) {
return this.elementos[pos];
}
return null;
}
@Override
public Object remove(int pos) {
Object removido;
if (pos < this.fim) {
removido = this.elementos[pos];
for (int i=pos ; i <this.fim ; i++) {
this.elementos[i] = this.elementos[i+1];
}
this.fim--;
this.qtde--;
return removido;
}
return null;
}
@Override
public int indexOf(Object obj) {
for (int i=0 ; i < this.fim ; i++) {
if (this.elementos[i].equals(obj)) {
return i;
}
}
return -1;
}
@Override
public boolean contains(Object obj) {
return (this.indexOf(obj) >= 0);
}
@Override
public Object[] toArray() {
Object[] objs = new Object[this.fim];
for (int i=0 ; i < this.fim ; i++) {
objs[i] = this.elementos[i];
}
return objs;
}
public void findBiggestAndSmallest() {
for (int i = 0; i < this.elementos.length; i++) {
int num = (int) this.elementos[i];
if (num > this.biggest) {
this.biggest = num;
}
if (num < this.smallest) {
this.smallest = num;
}
}
}
}