Citat:
Ursprungligen postat av
bosscs2
Jag vill loopa genom en lista av objekt och addera samtliga int x -> int sum.
Felet uppstår 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 förra?
Felet beror på som sagt att du ifrån din staticmetod försöker anropa en ej static variabel. sum ligger som ett attribut i varje instans av test, men du försöker 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 börja med.
Det du sen vill göra(om det nu är nån slags summering du är ute efter) är att
1. antingen deklarera en lokal variabel i main och plussa på den
2. Läta sum vara static i din klass test.
Oavsett vilket ska du inte ha nåt publikt i dina klasser om de inte är static final och används som konstanter.