Java için oldukça yeniyim, bu yüzden lütfen 5 yaşında olduğumu ve beş yaşına uygun bir yanıt gerektirdiğini hayal edin.Bir yöntemdeki bir dizinin uzunluğunun alınması işe yaramaz
İlk bazı bilgiler: Ben büyür ve gerektiğinde küçülür bir "Dinamik dizi" yapmaya çalışıyorum. Ben arraylists biliyorum, bunun amacı ben kendim bunu yapmak ve aynı zamanda ArrayList
s çalışma zaten nasıl olduğunu varsaymak beri aynı zamanda öğrenmek gerekir.
Sorun: Biri tüm dizinin ortalama değerini hesaplamak için yukarıdaki nedenlerden dolayı bazı fantezi yöntemleri eklemek istiyorum. uzunluğunu almayı denediğimde (varible.length
) diğer bazı yöntemlerde işe yaramıyor!
Bu
çalışmıyor yöntemdir:public double meanValue() {
double meanDiv = 0;
int div = x.length;
for (int i = 0 ; i < div ; i++) {
meanDiv += x[i];
System.out.println("Testing");
}
meanDiv = meanDiv/x.length;
return meanDiv;
}
O NaN (sayı değil) döndürüyor, ancak 0 döndürür bölünme bölümünü atlarsanız, tamamen x.length
okumuyor.
En kötü bölüm? için yerine sürerken burada, vb yol çok şeyler değişkenlerin farklı tür denedim
public long last() {
long pepe = -1;
if (x.length==0) {
System.out.println("Nothing in the array! Returning -1");
}
else {
pepe = x[x.length-1];
}
return pepe;
}
edilir: Bazı yöntemler son konumunu dönmek için örneğin bu bir çalışıyoruz gerekirse, tüm sınıf:
public class dynamicArray {
private long[] x;
private int size = 0;
public dynamicArray() {
x = new long[size];
} // CREATES THE ARRAY
public long grab(int x) {
if (x < this.x.length) {
return this.x[x];
}
else {
System.out.println("(GET) Out of bounds");
return -1;
}
}
public void add(long value) {
dynamicInAction();
x[size] = value;
size++;
} // ADD A NUMBER TO THE ARRAY
public void remove(int position) {
} // REMOVES A SPECIFIC ARRAY POSITION----------------
public long last() {
long pepe = -1;
if (x.length==0) {
System.out.println("Nothing in the array! Returning -1");
}
else {
pepe = x[x.length-1];
}
return pepe;
} // RETURNS THE VALUE IN THE LAST POSITION
public long first() {
long pepe = -1;
if (x.length==0) {
System.out.println("Nothing in the array! Returning -1");
}
else {
pepe = x[0];
}
return pepe;
} // RETURNS THE VALUE IN THE FIRST POSITION
public void modify(int position, int value) {
if (position < x.length && position >= 0) {
x[position] = value;
}
else {
System.out.println("This position does not exist");
}
} // MODIFIES A SPECIFIC POSITION TO THE ASSIGNED VALUE
public int size() {
return x.length;
} // RETURNS THE CURRENT ARRAY SIZE
public double meanValue() {
double meanDiv = 0;
int div = x.length;
for (int i = 0 ; i < div ; i++) {
meanDiv += x[i];
System.out.println("Testing");
}
meanDiv = meanDiv/x.length;
return meanDiv;
} // RETURNS THE MEAN VALUE OF THE WHOLE ARRAY-------------
public long median() {
return -1;
} // RETURNS THE MEDIAN VALUE OF THE WHOLE ARRAY-------------
private void dynamicInAction() {
if (x.length == size) {
long[] temp = new long[x.length];
for (int i = 0; i<x.length ; i++) {
temp[i] = x[i];
}
x = null;
//System.gc(); // Might be unnecessary
x = new long[size+1];
for (int i = 0; i<temp.length ; i++) {
x[i] = temp[i];
}
}
} // ENSURES THE ARRAY GROWS WHEN NEEDED
public void reverse() {
} // REVERSING ALL POSITIONS IN THE ARRAY------------------
public void clear() {
x = null;
size = 0;
x = new long[size];
} // CLEARS THE ARRAY
}
Benim için iyi çalışıyor. Belki de test ettiğiniz veriler de dahil olmak üzere, sorununuzunuzu gösteren, runnable bir örnek vermelisiniz – MadProgrammer
10 Test ederken, dizideki en az bir elemanı vardı? –
@ImeshaSudasingha Sorun buydu, tüm listeyi yanlışlıkla temizledi. Teşekkürler ve üzgünüm. – FREEDOM