Citat:
Ursprungligen postat av
bosscs2
Jag vill loopa genom en lista av objekt och addera samtliga int x -> int sum.
Felet uppstr i sum+=t.getX();
"cannot static reference to a non static etc etc?
Kod:
import java.util.ArrayList;
public class Test {
private int x;
int sum;
Test(int x){
this.x = x;
}
public int getX () {
return x;
}
public static void main(String [] args) {
Test test1 = new Test(1);
Test test2 = new Test(2);
Test test3 = new Test(3);
ArrayList<Test>lista= new ArrayList();
lista.add(test1);
lista.add(test2);
lista.add(test3);
for(Test t : lista) {
sum+= t.getX();
}
}
}
Ett nytt fel nu allts, antar att du fixade det frra?
Felet beror p som sagt att du ifrn din staticmetod frsker anropa en ej static variabel. sum ligger som ett attribut i varje instans av test, men du frsker anropa den som om den vore en staticvariabel, alt en lokal variabel i din mainmetod.
Undvik publika attribut i dina klasser, tkomst till attribut sker medelst *etters i java till att brja med.
Det du sen vill gra(om det nu r nn slags summering du r ute efter) r att
1. antingen deklarera en lokal variabel i main och plussa p den
2. Lta sum vara static i din klass test.
Oavsett vilket ska du inte ha nt publikt i dina klasser om de inte r static final och anvnds som konstanter.